Commit Graph

1019 Commits

Author SHA1 Message Date
John Messerly 08fb2161f7 fixes #184, type literals now use emitTypeName
this fixes `dart.dynamic` as well as other cases covered by emitTypeName

R=vsm@google.com

Review URL: https://codereview.chromium.org/1142713004
2015-05-18 13:41:25 -07:00
John Messerly 01d39ba3f2 cleanup: simplify creation of AnalysisContext
removes TypeResolver class, introduces function to create analysis context, simplifies a few other things around mock vs real SDK sources.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1143683002
2015-05-18 10:20:29 -07:00
John Messerly b0ff84eedc fixes #183, remove our InMemory* in favor of analyzer's impl
this should improve test coverage too, as analyzer's MemoryResourceProvider/ResourceUriResolver matches the real semantics more closely than ours did.

R=sigmund@google.com

Review URL: https://codereview.chromium.org/1146503003
2015-05-15 11:17:24 -07:00
John Messerly f728691ac8 Fixes #179 -- compile error if editing files during server mode
this avoids reloading file contents many times during a compile. `.contents.data` == bad!
also fixes #73, using Analyzer's LineInfo instead of FileSpan to avoid finding line breaks over and over
I did some manual testing on sunflower as well as diffing SDK messages before and after

The one baseline change (23 -> 22) seems more accurate than it was before.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1141013002
2015-05-14 16:42:33 -07:00
John Messerly 995e0f0bb3 remove #177 workaround
this issue was fixed

R=vsm@google.com

Review URL: https://codereview.chromium.org/1142553002
2015-05-14 16:02:39 -07:00
Vijay Menon 3377d2b7c5 Angular workarounds
- Workaround for symbolized methods (e.g., core.$map)
- dload/dput workarounds
- NSM workaround
- generic method type check workarounds

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1131143002
2015-05-14 12:47:32 -07:00
Vijay Menon 7ca96fd202 Revert "Update runtime tests"
TBR=jmesserly@google.com

Review URL: https://codereview.chromium.org/1141873003
2015-05-14 09:57:57 -07:00
John Messerly ef1739d8eb Make typedefs lazy again
reverts part of https://github.com/dart-lang/dev_compiler/commit/3dcea8bf156b3947c4dbf4b36da55a64cd9dc492
On its own, it's probably okay, but trips on other issues we have w.r.t. JsName types and NoInterfaceObject apis

R=vsm@google.com

Review URL: https://codereview.chromium.org/1135883004
2015-05-14 09:45:41 -07:00
Vijay Menon b013a71e30 Create html if needed in server mode
This allows just serving up a dart file:

dart ./bin/devc.dart --server foo.dart

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1130093007
2015-05-14 09:26:19 -07:00
Vijay Menon c569af4ba8 Update runtime tests
TBR=jmesserly@google.com

Review URL: https://codereview.chromium.org/1143433002
2015-05-13 08:54:30 -07:00
Sigmund Cherem dfdaff85bb Load time improvements (fixes #140):
- move hash to a query parameter (it works!)
- do widget request later, let app render/loading in case the request is fast
enough.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1131933003
2015-05-12 16:53:32 -07:00
John Messerly aba85e3d9f fixes #131, use before define from variables to classes
Factored the load order logic into its own file, as it was easier to work with that way. We could definitely tweak the structure.

Also tried hoisting constants out to top level, but it's not quite ready yet, so splitting that work out into a separate CL.

(also fixes #152 about cleaning up lazyClass, and fixes #181 about static fields)

R=vsm@google.com

Review URL: https://codereview.chromium.org/1133593004
2015-05-12 11:47:36 -07:00
John Messerly 32f3c78b82 fix temps that have the same name to have different Elements
this was happening because we picked up an == operator from analyzer's Element

also adds an assert, because I took way too much time figuring out what the heck was happening there :)

R=vsm@google.com

Review URL: https://codereview.chromium.org/1139673005
2015-05-11 16:40:16 -07:00
Vijay Menon 286a2f36c5 Fixes #178
Expand out constructor call if needed.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1135543003
2015-05-11 10:56:11 -07:00
John Messerly ef8edb1273 fixes #175, fixed arrays
R=vsm@google.com

Review URL: https://codereview.chromium.org/1138533003
2015-05-08 14:33:37 -07:00
John Messerly da208152ea fixes #157, renaming local library identifiers if needed.
readability regression, but fairly simple fix. looks okay in libraries with few imports, bad if they have a lot. ultimately I think this gets cleaned up as part of emitting modules + handling module lowering in JS codegen, see issue #34.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1122133003
2015-05-06 13:47:38 -07:00
Leaf Petersen bf567bb94b Typing fixes to eliminate casts/dcalls
Tightens up some typing issues (mostly in the collections) to eliminate some casts and dynamic calls.  Also adds inference through parenthesized expressions.

BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1122313002
2015-05-05 16:47:19 -07:00
Leaf Petersen 071e6d0d46 SDK fixes
This fixes all of the static errors from generating the SDK except those in the _interceptors library, and a set of errors associated with checks of the form (v is E) for generic type parameter E.  Most of the fixes consist of adding missing generic parameters, or making overrides consistent.  There are a few fixes to resolve issues around code that moved implicitly between hidden implementation classes and their public API classes, and some other miscellaneous fixes.

All of my changes are in the tool/input_sdk directory - the rest of the diff is generated code.

BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1112403004
2015-05-05 10:58:33 -07:00
Leaf Petersen 3161bc578e Inference through conditional expressions.
Push type info down through conditional expressions.  This eliminates some casts (mostly due to a bug in the analyzer lub code).

BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1121993004
2015-05-05 10:47:42 -07:00
Vijay Menon 1a0efac4e5 Do not suppress implicit constructors that need a super call.
This fixes a bug creating an _AsyncCompleter (_Completer.future was not being initialized).

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1122883002
2015-05-04 14:50:34 -07:00
John Messerly b0899d64df fixes #150, broken code in js_number.dart
R=vsm@google.com

Review URL: https://codereview.chromium.org/1121853002
2015-05-01 14:37:19 -07:00
John Messerly 36373f06f2 add checks needed for covariant generics, and fixes #154, List<E> now has the right runtime type.
R=leafp@google.com

Review URL: https://codereview.chromium.org/1117793002
2015-05-01 14:11:52 -07:00
John Messerly 56c75ff912 fix #159, static renames for caller/arguments
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1111803005
2015-04-29 16:07:37 -07:00
John Messerly dc4b3d5be9 fix static members in _emitMemberName
static/top-levels don't need extension method, operator renames, or different slots* for private members

(static members are qualified by the static type, so they aren't ambiguous, e.g. Foo._foo and Bar._foo where Foo and Bar are in same/different libraries)

R=jacobr@google.com

Review URL: https://codereview.chromium.org/1111863002
2015-04-29 14:45:14 -07:00
John Messerly 83a40f41c8 patch_sdk: fix part/import order
gets rid of one case of errors

R=leafp@google.com

Review URL: https://codereview.chromium.org/1104753002
2015-04-27 16:56:07 -07:00
Vijay Menon 0d49f0175a Generate static calls for Object fields and methods
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1100633006
2015-04-23 14:23:39 -07:00
John Messerly 5af860f9ac fix #155, numeric integer literals
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1090613006
2015-04-23 13:43:53 -07:00
John Messerly a127bab753 canonicalize const
R=vsm@google.com

Review URL: https://codereview.chromium.org/1099333002
2015-04-23 09:12:26 -07:00
Jacob Richman 2a1e4985d4 fuse List and js Array together and a few other misc fixes.
BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1071393007
2015-04-22 17:23:31 -07:00
John Messerly 0efa91a94e implement tear offs
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1088943006
2015-04-21 15:30:18 -07:00
John Messerly bbe6801eff fixes #145, optional params+initializing formals+private fields
R=vsm@google.com

Review URL: https://codereview.chromium.org/1082333004
2015-04-21 15:28:46 -07:00
Vijay Menon b5e4a91941 Add flag to disable hashing
R=sigmund@google.com

Review URL: https://codereview.chromium.org/1088703003
2015-04-21 14:52:04 -07:00
John Messerly af584262c5 fix list initializers
also removes the int.parse hack, adds a special case to dindex instead.

R=jacobr@google.com, vsm@google.com

Review URL: https://codereview.chromium.org/1093353004
2015-04-21 11:25:03 -07:00
John Messerly 1e43b3ad50 [refactor] js_codegen: remove currentClass, simplify visitSimpleIdentifier
We were tracking currentClass for no real reason.

Also attempted to discern what visitSimpleIdentifier was actually doing. It now prefers the original element (the "field" not the synthetic getter/setter) whenever possible. Previously was a mismash.

This little change tripped on the (larger, not fixed yet) issue #138 ... but I think I found a way around the issue for now, by tweaking the private TypeDataArray class.

R=jacobr@google.com

Review URL: https://codereview.chromium.org/1095563003
2015-04-21 11:21:20 -07:00
Vijay Menon 9efc804f94 Remove workaround
Upstream bug is fixed now.

R=sigmund@google.com

Review URL: https://codereview.chromium.org/1096353002
2015-04-21 10:09:45 -07:00
John Messerly b01750fb6e fix super ctor logic
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1095683005
2015-04-21 09:33:41 -07:00
John Messerly 3eca59c586 fix fields that override getters/setters
R=leafp@google.com

Review URL: https://codereview.chromium.org/1099743002
2015-04-21 09:07:22 -07:00
Leaf Petersen 1a942eaf49 Handle calls through call methods
This CL makes us recognizes calls through call methods as not requiring dynamic invokes.  The analyzer seems to do the wrong thing on the return types though, so we'll still get casts on the results.  Bug filed here: dartbug.com/23252 .

This fixes #7.

BUG=
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1092183003
2015-04-17 16:37:19 -07:00
Leaf Petersen a880c6fcb9 Reifier hookup
Hook the coercion reifier into the JS backend.

The principle observed changes in the output are from the downward type inference eliminating casts.

The coercion reifier changes in this CL in two ways.

The first is a relatively minor change to factor out the instrumented runtime calls.  The reifier is now parameterized by a runtime object.  If present, casts, wraps, and type object creation are delegated to the runtime.  Otherwise the reifier just produces cast objects directly.  The JS codegen always does the latter.

The larger change is an attempt to make the new AST nodes be resolved.  This is principally done for the typedefs produced for casts - we're not using wrapping right now so I've left that for future if we want it.  This is a bit painful - if we continue down this path I think I'll want to factor this out into a ResolvedAstBuilder or somesuch, but for now this seems to be working.

The rest of the changes are just plumbing in the coercion reifier and its dependencies into the js backend.

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1096583002
2015-04-17 13:56:04 -07:00
John Messerly 33322cb95b Smarter js temp naming, fixes #136
JSTemporary is now identified by instance, not its String name. This provides enough information to do renaming correctly and avoid the bug in #136.

The namer now considers all scopes where the temporary is visible, and chooses a name that doesn't conflict with other identifiers. Because it only considers scopes where the temp appears, it does less renaming that the previous version.
2015-04-15 14:47:29 -07:00
John Messerly da91435c66 fixes for angular hello: String + and disable broken arg parsing
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1085723002
2015-04-14 18:04:14 -07:00
John Messerly 267050cdac refactor emitMemberName to be used more consistently
other changes:
* adds _emitSend for more consistent emitting of method calls. can't be used everywhere yet, but it unifies some things
* more consistent use of the core.String.* static pattern
* fix dynamic invoke to private members
* fix implicit-this to use emitMemberName, which makes them work with extension methods
* build the global extension method table up-front and optimize lookups (method name first, then subtype test if needed)
* teach the compiler that IsExpression never returns null

R=jacobr@google.com

Review URL: https://codereview.chromium.org/1083763003
2015-04-14 16:07:28 -07:00
John Messerly ca2fff3c05 rename dart_runtime.js helpers
this should make the diff simpler in the other CL

R=jacobr@google.com

Review URL: https://codereview.chromium.org/1074923003
2015-04-14 13:48:31 -07:00
Leaf Petersen ad4af9c482 Refactor reifier to make it less dart_codegen specific.
This is some first steps towards hooking the reifier into the js backend.  I've made the reifier operate on whole libraries instead of per compilation unit so that it can be hoisted out as a separate pass.  I changed the API of the reifier to return a map from new type identifiers to information about their library of origin, so that the code generators can deal with these appropriately.  Take a look, see what you think - suggestions as to how to structure this to interact well with the JS backend welcome.

BUG=
R=jmesserly@google.com, vsm@google.com

Review URL: https://codereview.chromium.org/1070453002
2015-04-13 16:14:32 -07:00
John Messerly 880a99c1bd fix sunflower -- dom types were not resolving
R=jacobr@google.com

Review URL: https://codereview.chromium.org/1088663002
2015-04-13 13:22:23 -07:00
Vijay Menon bbbee7c524 Fix a couple codegen crashers
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1062823004
2015-04-10 13:41:43 -07:00
Vijay Menon 68f2e32775 Enable downward inference on default params
R=leafp@google.com

Review URL: https://codereview.chromium.org/1064933006
2015-04-10 10:20:04 -07:00
John Messerly 13cf3805b8 implement opassign, fix bugs in pre/postfix, introduce a let* helper
Simplifies js_codegen to remove the special cases for things like cascades and statement parent, instead these "fall out" of JSMetaLet node and the various to* methods in js_ast. As a result of handling things more uniformly, code gets cleaner in a lot of cases. One slight "regression" is a cascade at the end of a variable init list with multiple variables. But multiple variables aren't very common so doesn't seem worth optimizing readability there.

R=leafp@google.com, vsm@google.com

Review URL: https://codereview.chromium.org/1069493002
2015-04-10 09:53:35 -07:00
Vijay Menon cb7143a32f Initial support for runtime function types and type checking
Notes:
- We probably should have a general type object class for all types.  Just handling function types for now.
- Not yet encoding the type on functions during codegen ... falling back on arity effectively.
- typedefs are lazy to avoid ordering issues.  Could perhaps reuse existing logic instead.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1076883003
2015-04-09 18:39:59 -07:00
Vijay Menon c769240b6b Don't call dinvoke on Object methods
There is the separate, but related question of how to invoke Object
methods when the receiver is Object or a JS primitive.  That should be
handled in the JS backend.  I can tackle that next if no one else is.

See #98.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1055923002
2015-04-07 16:27:59 -07:00