-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DartVM: factory allocation calls factory's constructor directly #504
Comments
DartVM is doing the right thing, this is a bug in dartc and frog. The reason why factory A is not invoked at new A(..) is because B implements A. Without "implements A" factory A will be invoked when allocating A. Assigning it to Peter so that he may provide more context/explanation. |
This comment was originally written by [email protected] Added Area-Compiler, Triaged labels. |
I have filed issues 521 and 523 against dartc and frog. |
Added Invalid label. |
Partially addresses #504. This is WIP, but wanted your thoughts. Comment / questions: - The current js_ast ImportDeclaration assumes a legal identifier I think. E.g., this gets lowered: import { src$interfaces } from "matcher" - Should we thread package root through ModuleCompiler to let it packagify urls? - How should we handle non-package urls? Pass in an explicit root dir and go relative? [email protected] Review URL: https://codereview.chromium.org/1917863005 .
dartdoc: 494a6bed 2023-02-02 Sam Rawlins Bump markdown dep to a pre-release of 7.0.0 (#3321) ad6f1612 2023-02-02 Devon Carew introduce an environmentProvider abstraction (#3324) d0b73000 2023-02-02 Sam Rawlins Prepare testing code for some upcoming Warnings (#3322) 936a7888 2023-02-01 Sam Rawlins Add text about front-end manual testing (#3286) cbee812d 2023-02-01 Sam Rawlins Avoid renaming generator params (#3316) bcaa0349 2023-02-01 Sam Rawlins Privatize Library.sdkLib and move getClassByName (#3317) af32def5 2023-01-31 dependabot[bot] Bump github/codeql-action from 2.1.39 to 2.2.1 (#3313) 528e97da 2023-01-31 dependabot[bot] Bump actions/cache from 3.2.3 to 3.2.4 (#3312) 54020672 2023-02-01 Parker Lougheed Begin changelog for next release after 6.1.5 (#3315) markdown: f51c24c 2023-02-01 Zhiguang Chen Prepend a line ending if the p tag is removed and there is an element before it in a *tight* list (#513) dd3e3a1 2023-01-31 dependabot[bot] Bump dart-lang/setup-dart from 1.3 to 1.4 (#510) 5f25fc9 2023-01-31 dependabot[bot] Bump actions/checkout from 3.2.0 to 3.3.0 (#511) 54266b2 2023-01-31 Kevin Moore Prepare to release v7.0.0 (#509) d6ceff9 2023-01-31 Zhiguang Chen Add line endings before HTML blocks (#508) ccd3c8b 2023-01-29 Zhiguang Chen Rewrite link reference definitions (#506) e8f84dc 2023-01-24 Kevin Moore Update GFM to 0.29.0.gfm.7 (#507) 93f67b0 2023-01-20 Zhiguang Chen Add an `enableTagfilter` option to `HtmlRenderer` to eanble GFM `tagfilter` extension (#447) d110770 2023-01-13 Zhiguang Chen Rewrite SetextHeaderSyntax (#500) c1b9bc6 2023-01-09 Sam Rawlins Migrate from no-implicit-casts to strict-casts (#504) 3e78c08 2023-01-01 dependabot[bot] Bump actions/checkout from 3.0.2 to 3.2.0 (#501) 417747f 2022-12-15 Zhiguang Chen Refactor list syntax (#499) 30ec05f 2022-11-29 Zhiguang Chen Do not escape single quote(apostrophe) inside code (#498) c3d1136 2022-11-29 Zhiguang Chen introduce a Line class (#494) Change-Id: I9d971b927b72500ab84cce461a60fe1a86818e2e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/281543 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Devon Carew <[email protected]>
This issue was originally filed by [email protected]
The following code should print "!", but it does not on current trunk of DartVM.
When doing new A(1,2), it jumps straight to invoke B(1,2) without using my factory method B.A(1,2). This only happens with DartVM -- frog and dartc gets it right. If B does not implement the A interface, then it calls the factory method allright.
interface A factory B {
A(int x, int y);
}
class B implements A {
final int x;
final int y;
B(this.x, this.y);
factory A(int a, int b) { print("!"); return new B(a,b); }
}
main() {
var v = new A(1,2);
}
The text was updated successfully, but these errors were encountered: