Leaf Petersen
0399992b81
Downwards closure inference. This implements a basic form of downwards closure inference. It only handles expression functions (=> e), and it does not try to narrow the type of parameters.
...
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1050703002
2015-04-03 09:17:30 -07:00
John Messerly
a4cbcc0c07
implement mixins in subtype checks, more codegen fixes
...
or: how creating a SplayTreeSet<String> leads to fixing a bunch of stuff
R=vsm@google.com
Review URL: https://codereview.chromium.org/1058653002
2015-04-02 12:16:24 -07:00
John Messerly
3ce5a11d77
compute interfaces lazily
...
otherwise we'd have to make a lot more classes lazy
R=jacobr@google.com
Review URL: https://codereview.chromium.org/1047203002
2015-03-31 09:14:37 -07:00
John Messerly
5472d0cfcd
keep mixin and interface implementation info at runtime
...
R=jacobr@google.com , vsm@google.com
Review URL: https://codereview.chromium.org/1043003002
2015-03-30 16:09:48 -07:00
John Messerly
fc02cba0f4
use == and != to enable handling null/undefined
...
R=jacobr@google.com , vsm@google.com
Review URL: https://codereview.chromium.org/1047023002
2015-03-30 16:01:22 -07:00
Jacob Richman
a6ca53ee49
fix list literal initialization call fix typeof calls for primitive JS types add dart/collection.js to defaultRuntimeFiles list Enclose switch statement case blocks with braces to insure a block scope matching dart semantics
...
BUG=
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/1042003002
2015-03-30 09:42:29 -07:00
John Messerly
2357e3013b
more care around generated names, fixes #60 #82 and #97
...
R=vsm@google.com
Review URL: https://codereview.chromium.org/1030063004
2015-03-26 17:47:31 -07:00
Vijay Menon
67e4bc583a
Rationalize coercions
...
This breaks out casts / coercions into:
Standard (on by default)
- DynamicCasts: dynamic -> T
- AssignmentCasts: T x = expr; // T must be a ground type
Inference (this will go away)
- InferableLiteral
- InferableClosure
- InferableAllocation
Implicit (no flag yet, but i'll add to disable by default)
- DownCastComposite: Any cast to a non-ground type
- DownCastImplicit: Any other implicit downcast not covered above
A flag is also added to enable/disable all wrapping. This is not off by default yet, but that is the intent.
R=leafp@google.com
Review URL: https://codereview.chromium.org/1038583004
2015-03-25 14:51:54 -07:00
Sigmund Cherem
2bf7e0aed8
Transitive inference using SCC
...
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1028793002
2015-03-23 13:11:33 -07:00
John Messerly
e1c8e996b7
Replace dart_core.js with actual compiled SDK
...
Almost no calls are going to work at this point, but core.js can load
now and there is enough in place to continue to load sunflower.
R=sigmund@google.com
Review URL: https://codereview.chromium.org/1020043002
2015-03-20 09:41:00 -07:00
John Messerly
b62f4c06ab
sort classes in dependency order, or load lazily if needed, fixes #78
...
this also starts using compiled code in dart_core.js (just copy+paste for Object)
visitClassDeclaration was getting rather long, so it's now refactored to make the flow more clear.
R=sigmund@google.com
Review URL: https://codereview.chromium.org/1016003003
2015-03-19 10:03:22 -07:00
Vijay Menon
48d4a4e320
Allow S->T <: dynamic->T
...
In followup CLs, I will:
- Fix coercions to limit implicit ones.
R=jmesserly@google.com , leafp@google.com
Review URL: https://codereview.chromium.org/1010893004
2015-03-18 16:40:43 -07:00
Sigmund Cherem
fa03b6b422
Move sunflower to a new directory, make final tweaks to make it all work.
...
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/1007313003
2015-03-18 15:53:59 -07:00
Sigmund Cherem
f7b7f43d28
Fixing layout in js output (use full paths rather than just the library name)
...
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/968273002
2015-03-03 09:05:09 -08:00
John Messerly
a260ce7a62
fixes #69 , avoid module name inside module scope
...
R=vsm@google.com
Review URL: https://codereview.chromium.org/967713002
2015-03-02 07:10:55 -08:00
John Messerly
b82e83f383
use js_ast instead of strings to generate JS
...
fixes https://github.com/dart-lang/dev_compiler/issues/61
R=sigmund@google.com , vsm@google.com
Review URL: https://codereview.chromium.org/949383003
2015-02-25 11:14:19 -08:00
John Messerly
7c1ab1f04d
work around issue #51 , super restrictions in V8
...
Adds an explicit "extends dart.Object", which we probably want for other reasons (e.g. toString, runtimeType, hashCode)
Attempts to recover some readability by tweaking the name of the initialize functions. This closes #51 , but we should open another tracking bug because there are concerning aspects to this workaround.
R=sigmund@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/150417015
2015-02-18 16:27:32 -08:00
Vijay Menon
260cfc05d2
Make nonnullability configurable
...
John: I added code in the JS codegen to query which primitives are non-nullable.
R=jmesserly@google.com , sigmund@google.com
Review URL: https://chromereviews.googleplex.com/155407013
2015-02-18 14:20:22 -08:00
John Messerly
fe19170e93
better handling of string literals and interpolation
...
fixes https://github.com/dart-lang/dart-dev-compiler/issues/42
V8 has shipped template strings: https://code.google.com/p/v8/issues/detail?id=3230
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/152127013
2015-02-12 11:45:39 -08:00
John Messerly
f85c2eb649
fix mixin field init, implicit-this
...
also slight change to sunflower example
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/144247014
2015-02-09 13:11:26 -08:00
John Messerly
591834b748
improve cascades
...
* better code for the case we already supported
* support the general case
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/154757013
2015-02-09 13:04:55 -08:00
John Messerly
9957696748
improve invoke/as code
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/149937013
2015-02-05 15:46:42 -08:00
John Messerly
1c26c3e1a6
fix user-defined operators in classes
...
well, at least they don't generate blatantly illegal ES6 code now :)
also fixes incorrect implicit this generation, dynamic get/index, and set/setindex
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/146497013
2015-02-03 16:56:24 -08:00
John Messerly
9f318a484c
add support for mixins
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/147247013
2015-01-30 11:19:31 -08:00
John Messerly
cad9b49ae4
generate JS per-library instead of per-unit
...
R=leafp@google.com
Review URL: https://chromereviews.googleplex.com/148007013
2015-01-28 12:51:45 -08:00
John Messerly
728258ba48
improve top-level field codegen: avoid Element.node getter
...
also correctly exports the values of top-level fields, and ensures it uses the most up-to-date value for mutable top-level fields
we can likely improve this further once we have ES6 modules, but it seems like an okay start
R=sigmund@google.com
Review URL: https://chromereviews.googleplex.com/147927013
2015-01-27 08:25:53 -08:00
John Messerly
b9fce8ad51
add lazy fields, cleanup library identifiers
...
R=leafp@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/146777014
2015-01-26 10:25:45 -08:00
John Messerly
69add413d2
add work-in-progress deltablue
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/147607013
2015-01-22 09:49:48 -08:00
John Messerly
411803ffd4
don't use deprecated constant visitor
...
R=jacobr@google.com
Review URL: https://chromereviews.googleplex.com/145987013
2015-01-21 15:51:26 -08:00
John Messerly
c350bb7816
use harmony features in js codegen, including classes
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/138327013
2015-01-14 14:35:50 -08:00
John Messerly
37870d5f2e
implement string interpolation
...
R=justinfagnani@google.com
Review URL: https://chromereviews.googleplex.com/129337014
2014-12-17 16:45:57 -08:00
John Messerly
9774313c4d
sunflower works
...
some hacks for our lack of corelib, but otherwise it works now.
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/133857013
2014-12-17 14:45:04 -08:00
John Messerly
050dfd037b
make cascades be expressions. This was bothering me from previous CL but didn't get to fix :). Codegen is now based on JS comma expression.
...
For now I ripped out the temp machinery. With the current writer there's no easy way to put the variable declaration in the right place. We can revive it when we have something, like the NestedPrinter from source_maps pkg. For now cascades are only generated when the target is a simple identifier. (That too is wrong in the case of getters, with multiple evaluations, but it's less wrong. At least we don't mess up the syntactic structure of the generated output.)
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/128587013
2014-12-17 14:07:02 -08:00
Leaf Petersen
fa5cbce3fd
Initial cut at new typing rules
...
BUG=
R=sigmund@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/124467014
2014-12-17 11:02:25 -08:00
John Messerly
0493ac3271
initial sunflower changes
...
still some things unimplemented, but since we're all hitting the same paths figured I'd land what I have so far
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/125537013
2014-12-16 14:10:08 -08:00