Commit Graph

319 Commits

Author SHA1 Message Date
John Messerly a7f812b676 fix #552, Object members on native types
We initially hard coded a few of these. That worked until native_typed_data and html were added. Those two libraries have a lot of native types.

This also fixes TypeRep to extend dart:core Object, and fixes the dart:_runtime so we can write Dart classes. Cleans up a few of the JS builtins as well.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1962823002 .
2016-05-10 11:35:38 -07:00
Bob Nystrom e535970604 Update dart:convert and dart:core Uri.
I started trying to get the convert tests all cleaned up and passing
but realized I was going down a rathole. So, for now, all of the slow
or failing ones are just skipped.

BUG=
R=sra@google.com

Review URL: https://codereview.chromium.org/1965563003 .
2016-05-10 10:25:38 -07:00
Harry Terkelsen 6a1d61fba7 optimize self-references in generic type definitions
fixes #556

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1958193002 .
2016-05-09 11:42:57 -07:00
Leaf Petersen 86c4dc01a1 Only use white list on indefinite checks
BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1953823005 .
2016-05-06 19:14:47 -07:00
Stephen Adams 65e8266447 Update collection (list / map / iterable) printing.
Remove methods from IterableBase that are now on Iterable.

And random comments from other files.

Review URL: https://codereview.chromium.org/1956933002 .
2016-05-06 16:03:44 -07:00
Jacob Richman 2cc3233c13 Remove unittest.js from codegen/expect directory.
BUG=

Review URL: https://codereview.chromium.org/1956053002 .
2016-05-06 13:48:33 -07:00
Jacob Richman 9520e96340 Switch to actual unittest, stack trace, and path packages. Tag tests as failing that were ignored due to the incomplete unittest library. Make running of unittests a bit more robust by wrapping them inside a mocha test to avoid unpredictable behavior due to interleaving async mocha and unittests.
BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1956513004 .
2016-05-06 12:28:44 -07:00
Harry Terkelsen d9e0533bf9 allow 'super' in async and finally blocks
Fixes #499
Fixes #528

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1948563002 .
2016-05-05 17:03:11 -07:00
Stephen Adams daddc0d4fa Update number parsing.
Review URL: https://codereview.chromium.org/1950133008 .
2016-05-05 16:15:05 -07:00
Bob Nystrom a6d1fbfb9d Fix accessing private members on extension classes.
Since the member was already a symbol, canonicalMember() was incorrectly
double wrapping it.

Fixes #508.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1944293003 .
2016-05-04 15:04:00 -07:00
John Messerly 56b9d090aa fix #549 export of properties
R=vsm@google.com

Review URL: https://codereview.chromium.org/1949253002 .
2016-05-04 14:59:12 -07:00
John Messerly c840252271 fix for #520, ListMixin should work again
it regressed when dart:html was added and it became an "extension type"

R=vsm@google.com

Review URL: https://codereview.chromium.org/1949163003 .
2016-05-04 14:31:29 -07:00
Leaf Petersen 2f00ebd41c Better is/as check handling. With this CL, the subtype function in
the DDC runtime returns null when a difference from the spec mode
result is possible.

Fixes https://github.com/dart-lang/dev_compiler/issues/524 .

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

Review URL: https://codereview.chromium.org/1945113003 .
2016-05-04 13:25:55 -07:00
Stephen Adams be0d779177 Add corelib tests
99 have compile errors
265 generate code
94 fail

We will triage after updating the sdk.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1945153002 .
2016-05-04 11:09:28 -07:00
Bob Nystrom 3bb9e0aa93 Don't wrap type literals that are referenced by prefixes.
Also, fix the language test for this to actually do something useful.
I accidentally removed the definition of testType() in the last patch,
so the test did nothing. :(

Fixes #547.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1945643005 .
2016-05-04 10:13:23 -07:00
John Messerly 2b20f3d1cc fix #543, export of properties should now work
top-level fields, getters, setters were all broken

R=vsm@google.com

Review URL: https://codereview.chromium.org/1949733002 .
2016-05-03 16:37:42 -07:00
Bob Nystrom 44db042cd8 Redo how Type objects are exposed from DDC.
- Instead of using the raw runtime type that DDC uses for its type
  checks, use a WrappedType that correctly implements Type's interface.
- Compile class literals to wrap the type in a WrappedType.
- Make Object.runtimeType() do the same thing.

Fixes #488. Fixes #511.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1944483002 .
2016-05-03 14:24:08 -07:00
John Messerly 733773476d instantiate generic tear-offs, fixes #525
R=het@google.com

Review URL: https://codereview.chromium.org/1930323004 .
2016-04-29 16:41:24 -07:00
Harry Terkelsen 428cb00f7d include type parameters on generic sync/async functions
fixes #538

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1935823002 .
2016-04-29 15:25:56 -07:00
Stephen Adams a7504464c3 Improve code for shifts and bitwise operations.
- JavaScript shifts can be used for operands in certain ranges.

- Coercion from signed-32 to unsigned-32 can be omitted if
  - it is a no-op
  - the context performs the coercion
  - the context is insensitive to the most significant bit

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1920293005 .
2016-04-29 12:22:15 -07:00
John Messerly 6598fa0f7d implement generic method runtime behavior, fixes #301
R=leafp@google.com, vsm@google.com

Review URL: https://codereview.chromium.org/1926283002 .
2016-04-29 10:41:48 -07:00
Harry Terkelsen d109467369 Use lazy static fields when overriding static getters or setters.
Fixes #522

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1927353002 .
2016-04-28 15:42:01 -07:00
Stephen Adams 8c745c69d1 Fix modulo and bitwise operators.
Dart `%` is modulo, JS `%` is remainder, so call the runtime version.

Use dart2js interpretation of bit operations and shifts which always
produce a 32-bit unsigned result.

Optimization of the bit operations to follow.

BUG= https://github.com/dart-lang/dev_compiler/issues/518
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1924413002 .
2016-04-28 13:47:22 -07:00
Vijay Menon 9d49469af4 Reenable typed_data and html tests
TBR=jacobr@google.com

Review URL: https://codereview.chromium.org/1924423002 .
2016-04-28 13:00:07 -07:00
Jacob Richman efa2303c64 Add all dart:html tests from the sdk to test/codegen. All tests are added except for js_array_test.dart and js_dart_to_string_test.dart which have to be stripped out for now due to failures.
BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1930043002 .
2016-04-28 12:30:25 -07:00
Vijay Menon acc4d6867d Stop concatenating all tests
R=sra@google.com

Review URL: https://codereview.chromium.org/1928443006 .
2016-04-28 11:29:38 -07:00
Jacob Richman eef7f81d0a Land fix to StackTrace.current performance already landed in dart2js.
BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1927813002 .
2016-04-28 09:28:25 -07:00
Sigmund Cherem b163c86585 Make file-paths absolute before providing them to the CustomUrlResolver
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1931553003 .
2016-04-28 09:07:28 -07:00
Vijay Menon 3483e1974c Qualify library names in packages
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?

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1917863005 .
2016-04-27 21:03:58 -07:00
John Messerly aa0b75f893 simplify emitting dart.bind for native types
R=het@google.com

Review URL: https://codereview.chromium.org/1921503007 .
2016-04-27 09:59:32 -07:00
John Messerly 45f57aab55 small cleanup in dart:_runtime
there was LazyTagged thing that was not necessary

R=vsm@google.com

Review URL: https://codereview.chromium.org/1920743003 .
2016-04-26 17:58:13 -07:00
Harry Terkelsen bc0536a56a Use static dispatch for dynamic on Object methods
Fixes #510

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1919173004 .
2016-04-26 17:54:02 -07:00
Harry Terkelsen 6a7e3ca102 Remove virtualField helper, just emit getters/setters in codegen.
Also fixes problems with final field overrides, which only override
the getter, not the setter.

BUG=https://github.com/dart-lang/dev_compiler/issues/486
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1918033002 .
2016-04-26 12:39:48 -07:00
Vijay Menon 886616c3aa Fixes #519
This is the Symbol bug which is breaking package:unittest.

R=leafp@google.com

Review URL: https://codereview.chromium.org/1915533004 .
2016-04-22 11:26:57 -07:00
Jacob Richman cb59a83138 Fix build break due to bug 522
BUG=

Review URL: https://codereview.chromium.org/1904373002 .
2016-04-21 17:18:44 -07:00
John Messerly ea5016ccbe fixes #516, nested cascade code generation
our let* was not hygenic, due to incorrect use of named substitution

R=vsm@google.com

Review URL: https://codereview.chromium.org/1910233002 .
2016-04-21 15:19:15 -07:00
Harry Terkelsen 0d36e889e2 Emit forwarding getter/setter when overriding just a getter or setter.
Based on Vijay's change: https://github.com/dart-lang/dev_compiler/commit/74dc4a6a808b271312aabe1bf463f1e7f4889a43

BUG=https://github.com/dart-lang/dev_compiler/issues/497
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1899373002 .
2016-04-20 18:08:09 -07:00
John Messerly 261d7bf63a a few small dart:_runtime cleanups
R=vsm@google.com

Review URL: https://codereview.chromium.org/1896343002 .
2016-04-20 12:52:32 -07:00
Vijay Menon 5cb361db25 Fix for node modules
We weren't emitting the actual program.  :-)

Seems to work really well - using for easy command line testing.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1893293003 .
2016-04-19 14:28:43 -07:00
Harry Terkelsen 7e32a93b26 emit 'this.x' when 'super.x' accesses a field
BUG=https://github.com/dart-lang/dev_compiler/issues/501
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1895903002 .
2016-04-18 14:44:23 -07:00
John Messerly 0c148ecef4 Implement modular compilation
Highlights
* compile one module at a time
* use summaries to speed up compiles
* use command runner so we can add more commands later
* some long needed renames and file organization
* various other technical debt has been addressed

Lowlights
* lost node.js runner/tests (node output format still supported)
* possibly lost some closure support/workarounds (format still supported)
* needs more end-to-end tests of the new system

R=vsm@google.com

Review URL: https://codereview.chromium.org/1879373004 .
2016-04-14 11:28:12 -07:00
Vijay Menon 1d1438cec7 Regen against latest analyzer
A couple notes:
- regress_18535_test started failing at runtime.  It's using unimplemented mirrors code, so perhaps a static failure before.
- typed_data_sublist_type_dart started failing at runtime.  It was inferring Is<EfficientLength> with the type omitted. :-(
- my local chrome is newer than the one on travis failing on generators.  not seeing that error.

TBR=jmesserly@google.com

Review URL: https://codereview.chromium.org/1847163002 .
2016-03-31 13:18:42 -07:00
John Messerly e8bee43919 More analyzer updates, and handle negative_tests
Also fixes node_test to not overwrite main SDK log

R=vsm@google.com

Review URL: https://codereview.chromium.org/1840203002 .
2016-03-29 15:16:44 -07:00
John Messerly 63a119bd86 fix to run against latest analyzer
hard part was dealing with the new for-each changes
the good news is the new for-each logic simplifes our await-for checking

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

Review URL: https://codereview.chromium.org/1840713003 .
2016-03-28 14:22:36 -07:00
Leaf Petersen 569c4f9045 Tweaks to compile against latest analyzer. Also changes the travis
setup to only override analyzer dependencies when $ANALYZER is
explicitly set to master.

BUG=
R=rnystrom@google.com

Review URL: https://codereview.chromium.org/1808123006 .
2016-03-18 20:57:00 -07:00
Leaf Petersen 2fae28ee43 Resolve obvious deprecation warnings on bleeding edge
BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1797063002 .
2016-03-15 10:15:34 -07:00
John Messerly 8de2cf84bc simplify function coercions -- DDC can generate function types in place
R=leafp@google.com

Review URL: https://codereview.chromium.org/1783603009 .
2016-03-14 10:37:57 -07:00
John Messerly b8ae9f9b77 a few small refactorings to closure workarounds
* factor the class heritage workaround so it's out of the way & easier to remove later.
* always emit type parameters in the AST, and pass the flag to the printer to skip printing them.
* cleanup an unnecessary sync* method for closure field decls.
* also, reformats. I think I forgot to do that in previous CL.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1767803002 .
2016-03-08 15:56:18 -08:00
Vijay Menon 883972e37a Fix deprecation message
TBR=jmesserly@google.com

Review URL: https://codereview.chromium.org/1775673002 .
2016-03-07 15:33:01 -08:00
John Messerly 93251ee241 upgrade to latest analyzer
fixes https://github.com/dart-lang/dev_compiler/issues/471

Changes here are:
* Analyzer now infers list/map literals
* Analyzer changed how isPotentiallyMutated* APIs work, so we need to track current function
* Another fix to arrow functions. We shouldn't skip generating covariant arg checks. If there were any, we use `=> { block }` form rather than `=> expr` form.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1757343002 .
2016-03-03 11:32:54 -08:00