Commit Graph

1960 Commits

Author SHA1 Message Date
Dmitry Stefantsov 316bc2d96e [ddc-kernel] Fix how mock members for fields are generated
Bug:
Change-Id: I6b910c9faa741fd8c8121250fbce55e9a9d29c50
Reviewed-on: https://dart-review.googlesource.com/24121
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2017-12-01 09:46:16 +00:00
Jens Johansen 22d0696d91 [CFE] Move front-end API under src/
This CL deprecates the front-end API and moves it into src/api_prototype.

For now all usages have been updated to point to the new location,
but they should be updated to use custom-client invocations instead (e.g.
one specific way for DDC, another for dart2js etc.)

Bug:
Change-Id: I9b4f41f6ebf55d42510fd35240d942d1dc7292d6
Reviewed-on: https://dart-review.googlesource.com/24822
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-12-01 08:42:16 +00:00
Jens Johansen ac245f73af [DDC-kernel] Finish stage 1 of adding source maps
This CL "finishes" the first iteration of adding sourcemaps to the
DDC-kernel pipeline. There will likely still be some work left to do,
but it can be added as it is noticed. Ideally by adding a test first.

This CL adds testing and fixes source maps for

- (Better) handling of async, async* and sync*
- Conditional expressions
- await for
- multi catch (catch on (...) { ... } catch on (...) { ... })
- yield
- variable set
- static set
- == and identical
- string concatenation
- is and as
- throw
- map literals

Bug:
Change-Id: Ia3e5145eff049d9829cb636864ef76f300e09615
Reviewed-on: https://dart-review.googlesource.com/24105
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-11-30 10:28:51 +00:00
Jens Johansen bbaa91e912 [DDC] Add context.enterNode call to "if" in "else" clause
Without this there is no way to get source maps on the else if in e.g.
```
    if (core.StateError.is(e$)) {
      core.print("StateError");
    } else if (core.ArgumentError.is(e$)) {
      let e = e$;
      {
        core.print(dart.str`ArgumentError: ${e}`);
      }
    }
```

Bug:
Change-Id: I0203fe7f1e0c14c677e16d61e7649624b72d41cd
Reviewed-on: https://dart-review.googlesource.com/23673
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2017-11-30 07:38:13 +00:00
Karl Klose 2d48be6e62 Invoke dartdevk.dart through shell script that locates the 'dart' executable
Change-Id: Id13cc838b67785b12f95d19b480a6a830ad5c003
Reviewed-on: https://dart-review.googlesource.com/24120
Commit-Queue: Alexander Thomas <athom@google.com>
Commit-Queue: Karl Klose <karlklose@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2017-11-29 11:27:50 +00:00
Kevin Millikin faff6876ca Fix a bug in nullability of fields
The simple nullability predicate would report that static fields are always
non-nullable.  Change this to report that they are always nullable.

Bug:
Change-Id: I47336bc9686c3bee90d77e6130bd5cddfb9f8a68
Reviewed-on: https://dart-review.googlesource.com/23674
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-27 14:15:11 +00:00
Kevin Millikin 05426fe0f5 Fix an issue in constructors
Static fields should not be initialized in constructors.

Bug:
Change-Id: I34cb16a1eaa1c38b13266883199b6541f35fe340
Reviewed-on: https://dart-review.googlesource.com/23600
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-27 09:39:11 +00:00
Kevin Millikin 4f551306f5 Fix a pair of superficial issues in generated JS
1. Catch bodies were unconditionally wrapped in a block, even when
they were already a block.

2. Finally was on a line by itself and indented incorrectly because of
an extra newline.

Bug:
Change-Id: I006cd2841c159a0fc86501bfaf282c7ad4c0ab0b
Reviewed-on: https://dart-review.googlesource.com/23580
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-24 15:31:27 +00:00
Kevin Millikin f84f656d56 Fix a bug in compilation of try/finally
Compilation of Kernel's try/finally included a flattening optimization
when the body was a JS try/catch.  This optimization duplicated the
catch block, which changes the semantics of exceptions thrown from the
catch block.

Bug:
Change-Id: I65aefa798d7f9026ab24ed6d1d484dea53235955
Reviewed-on: https://dart-review.googlesource.com/23560
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-24 15:29:47 +00:00
Jens Johansen c69cf9312d [DDC-kernel] Add source information to async wrapper and named parameter
This CL adds source information to the wrapping code for async and named
parameters. This is done for the source mapping not making Chrome (etc)
point to something completely wrong.

Tests are added too.

Bug:
Change-Id: Ifcd16428e0ca8c273fd6377e93297bbfbb37d773
Reviewed-on: https://dart-review.googlesource.com/23480
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-11-24 14:05:20 +00:00
Jens Johansen 19a0100a96 [DDC-kernel] Add source mapping to classes
This CL adds (initial) source mapping to classes and adds (some) tests
of wanted behaviour.

Bug:
Change-Id: I07a38930963b9d93e3bae5206b9eceda69643f7d
Reviewed-on: https://dart-review.googlesource.com/23300
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-11-24 14:05:20 +00:00
Jens Johansen 28607729fc [DDC-kernel]: Stepping into constructor with initializers
This CL adds a test for stepping into a constructor with initializers.
It additionally changes the stack map in the kernel pipeline to produce
a better result in this case.

Bug:
Change-Id: If0a43b030446c4a7370f386f0f51411d223dda83
Reviewed-on: https://dart-review.googlesource.com/20720
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-11-24 14:05:20 +00:00
Dmitry Stefantsov 68f2c12756 [ddc-kernel] Remove type parameters from function types of constructors
Bug:
Change-Id: I62a078d5c406358f2037dfc40900b7d957487e93
Reviewed-on: https://dart-review.googlesource.com/22081
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Karl Klose <karlklose@google.com>
2017-11-24 13:39:07 +00:00
Kevin Millikin fed1e4bd49 Fix a bug in compilation of while loops
Unlabeled while loops in Kernel (these are ones that are not the
target of a break) did not shadow labeled ones.  The compiler would
generate a break without a label in JS which would target the wrong
loop.

Bug:
Change-Id: Ib060ab66326a3ea0779eaceccaf1ca06ccfafb75
Reviewed-on: https://dart-review.googlesource.com/23421
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-23 20:53:06 +00:00
Samir Jindel e0e0760fc0 [kernel] Crash nicely in DDK.
Bug:
Change-Id: I90f8aca8ae394a7795f72ac0c63e1d6cb96ce2ed
Reviewed-on: https://dart-review.googlesource.com/22540
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2017-11-21 15:50:28 +00:00
Jens Johansen df1d05a7a1 [DDC-kernel] Initial source maps; testing framework for sourcemaps
This CL adds the bare minimum of source map generation for the kernel
pipeline in DDC.

It additionally introduces a testing framework that compiles dart files
with DDC (with or without kernel), steps through it via D8 and compares
the positions stopped at to the expected stop positions.

Bug:
Change-Id: Ie9e06164d8e51c973b83c46a8472e044876e4317
Reviewed-on: https://dart-review.googlesource.com/20662
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2017-11-21 10:23:08 +00:00
Bob Nystrom 68dc77f456 Build DDC's SDK as part of the regular build.
This involves a few main pieces:

- Add code to the GN scripts to generate DDC's patched SDK and then
  compile it to summaries and JS in the build output directory.

- Add support to the underlying DDC build scripts to support controlling
  which files are built where.

- Update test.dart to use the DDC SDK from the build directory.

- Update create_sdk to use the built SDK instead of the checked in one.

- Fix various internal DDC tools to build their own copy of the SDK
  (since they can't easily find the one in the build directory because
  it's path if config-specific) and use those.

- Delete the checked DDC SDK JS and summaries.

I think I got everything working. The built Dart SDK looks fine -- it's
identical to one built using the old build scripts.

The various tools and DDC's little test runner I *think* work, but there
may be a bug or two in there. I tried the various things I could and it
seems like they work but it's hard to tell since they may be kind of
broken right now anyway.

Bug:
Change-Id: Iea77915a5c1cc8450f60ebfbdf8c725c7ea2f32c
Reviewed-on: https://dart-review.googlesource.com/18144
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-11-20 23:24:07 +00:00
Vijay Menon f70f544e57 Fix source map entries for field accesses
This improves:
- stepping through assignment expressions in devtools
- hover on fields when on lhs

Change-Id: Ifee0d7b0fe2de65494182f6818b9dbcd0a79087d
Reviewed-on: https://dart-review.googlesource.com/21820
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Alan Knight <alanknight@google.com>
2017-11-17 23:38:45 +00:00
Leaf Petersen 63918ea921 Remove comment syntax from lib/async.
Eliminate uses of the comment syntax in lib/async.  This is mostly
done simply by turning explicit (but commented) casts into implicit
casts to avoid regressing dart2js performance.

Bug:
Change-Id: I286c7bffbf609b5e2fa24b9d48b90876c2c45a9b
Reviewed-on: https://dart-review.googlesource.com/21566
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2017-11-17 20:40:47 +00:00
Leaf Petersen 85ca7df7e2 Avoid fuzzy arrows when parsing json.
Change the types on the json decoding reviver to avoid fuzzy arrow
checks.

Bug:
Change-Id: I3ca52d7676b6305c398f128d370bc9859fd65820
Reviewed-on: https://dart-review.googlesource.com/21564
Reviewed-by: Vijay Menon <vsm@google.com>
2017-11-17 20:37:07 +00:00
Lasse R.H. Nielsen b0f6c4c8b1 Don't deprecate old constant names yet.
Flutter reacts badly to using deprecated members.

Change-Id: Id7933ddbc0c2fa68d9a232e2ad4c74dfd0ecdf35
Reviewed-on: https://dart-review.googlesource.com/21601
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-17 10:58:33 +00:00
Kevin Millikin a16234be9b Fix the dartdevk tests
Change-Id: I75af5c6c1e571e80d5ed023081d17b6a64a14827
Reviewed-on: https://dart-review.googlesource.com/21400
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2017-11-17 09:51:32 +00:00
Leaf Petersen 4a56f7b360 Add back missing cast failure cache on function types.
Casts for function types got moved off of the generic path, and hence
are missing the memo cache.  Added a second function type  cast cache.

Fixes #31392

Bug:
Change-Id: Ie1b87adf630f5059b57d01956778f5adde0533fc
Reviewed-on: https://dart-review.googlesource.com/21525
Reviewed-by: Vijay Menon <vsm@google.com>
2017-11-16 22:48:13 +00:00
Alan Knight abf5e4bad4 Use toString() for DDC header previews
For ObjectFormatter right now we just show the class name. Some objects,
e.g. Int64, have descriptive toString() operations that are much more
informative than their internal structure.

This changes the default header to be
  Instance of 'Thing'
rather than just
  Thing
which is a little worse, but it's much better for these kinds of classes.
For Int64 we will now show
  12345 (Int64)

We also clip the toString() if it's too long.

Bug:
Change-Id: Iae6a8e66fdbe1d9f5c157ecdb983a833e26d00f4
Reviewed-on: https://dart-review.googlesource.com/21522
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Alan Knight <alanknight@google.com>
2017-11-16 21:54:02 +00:00
Paul Berry 1034ad336d Strong mode fix for line_splitter.dart.
The new front end doesn't support generic comment syntax yet, so it's
getting the wrong type for LineSplitter in strong mode.  Since we no
longer to preserve legacy mode semantics for LineSplitter, we can just
use the correct strong mode types without generic comment syntax.

Change-Id: If2dcb2fb3fae9eb49685838e4e84958e545650c7
Reviewed-on: https://dart-review.googlesource.com/21286
Reviewed-by: Florian Loitsch <floitsch@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-11-16 19:52:51 +00:00
Leaf Petersen c7df667e9f Regenerate DDC sdk.
Bug:
Change-Id: Id92703841e1be358b27275aeecc3cc94eae89972
Reviewed-on: https://dart-review.googlesource.com/21385
Reviewed-by: Paul Berry <paulberry@google.com>
2017-11-16 17:03:25 +00:00
Kevin Millikin 680ac3c500 Fix compilation of break and continue in loops
Kernel represents break and continue in Dart uniformly as break.  When
compiling to JavaScript we would like to use continue where possible and
avoid labeling statements that do not need to be labeled.

The basic idea is: at compile time maintain a list of Kernel targets
(LabeledStatements) that can be compiled to JS break without a label at a
given point in the program, and a list of Kernel targets that can be
compiled to JS continue without a label, and a map from Kernel targets to
the 'effective' target that will be labeled if necessary when compiled to
JS, and a mapping from effective targets to their label names if they must
be labeled.

Change-Id: Ie660cf3dd68399ebff128116fe38c250cb6b7f35
Reviewed-on: https://dart-review.googlesource.com/21120
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-11-16 10:17:42 +00:00
Karl Klose ccde2ffcc2 Handle Kernel specific mixin name encoding
Change-Id: Ibcd4a5f54aaf621052331887d872866579e13dbc
Reviewed-on: https://dart-review.googlesource.com/19683
Commit-Queue: Karl Klose <karlklose@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-11-15 10:39:31 +00:00
Kevin Millikin 17430920f7 Fix nesting of try and finally blocks.
Kernel try and finally statements do not necessarily compile to JS
blocks, but the JS AST requires blocks for try and finally.  Ensure
that these statements are blocks.

Bug:
Change-Id: I7abe6ae55650dc726cc89d86d12757d21a783064
Reviewed-on: https://dart-review.googlesource.com/20721
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-15 09:46:51 +00:00
Kevin Millikin d95f73f018 Flatten nested block function bodies.
In many cases function bodies were a block containing a single nested
block.  Flatten these cases.

Change the test for whether a lexically-scoped local variable clashes
with a parameter to work on the generated code, not the source.

Change-Id: I74d37fe686e481e3300bb9d37b30857e8e375cb5
Reviewed-on: https://dart-review.googlesource.com/20661
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2017-11-15 08:58:51 +00:00
Lasse R.H. Nielsen 0b58c4bd10 Change some constant declarations to lowerCase.
Retain the old values.

Reapply of https://dart-review.googlesource.com/c/sdk/+/20680 with fixes
for VM method fingerprints.

Change-Id: Ie14e7ccc3194d5561983348e6b6752728913ff4d
Reviewed-on: https://dart-review.googlesource.com/20664
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-14 12:59:14 +00:00
Lasse R.H. Nielsen e61fc07b58 Revert "Change some constant declarations to lowerCase."
This reverts commit c048cfb178.

Reason for revert: VM code fingerprints needs update.

Original change's description:
> Change some constant declarations to lowerCase.
> 
> Retain the old values.
> 
> Change-Id: I03bd326f379fe5f96d8f6081a7133de956d745c0
> Reviewed-on: https://dart-review.googlesource.com/11520
> Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
> Reviewed-by: Florian Loitsch <floitsch@google.com>

TBR=lrn@google.com,floitsch@google.com

Change-Id: I095e8198304ca4e59b39d30b0fdf0af4945e5231
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/20680
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-14 11:23:08 +00:00
Lasse R.H. Nielsen c048cfb178 Change some constant declarations to lowerCase.
Retain the old values.

Change-Id: I03bd326f379fe5f96d8f6081a7133de956d745c0
Reviewed-on: https://dart-review.googlesource.com/11520
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-11-14 11:13:04 +00:00
Leaf Petersen 01f9fbd29a Name mixin classes to workaround V8 bug.
V8 is inferring arbitrarily large names (many kilobytes each) for
anonymous functions in certain conditions.  Naming top level classes
works around this.

See also: https://bugs.chromium.org/p/v8/issues/detail?id=7069

Bug:
Change-Id: I7bce1701ca81c12bb3cb970b959bc9512592975d
Reviewed-on: https://dart-review.googlesource.com/20261
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
2017-11-10 22:47:58 +00:00
Vijay Menon 6bf9d357b2 Fix declaration order for mixins
Fixes #31290

Bug:31290
Change-Id: I9f1874cf0b9173851655c0b1a2641e06b78a858a
Reviewed-on: https://dart-review.googlesource.com/19024
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-11-08 00:32:10 +00:00
Jenny Messerly 384678e4b3 port DDC's code_generator to Kernel
Change-Id: I2b6a5f56a69f5d3a965aefc3f8d4550d5940ac5a
Reviewed-on: https://dart-review.googlesource.com/17980
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-11-04 22:17:56 +00:00
Jenny Messerly f2478e5526 fix SDK for fuzzy arrows change to main function
Change-Id: I7b7d5b64c1694b0cd4d5b6d8b13231db236617cc
Reviewed-on: https://dart-review.googlesource.com/18688
Reviewed-by: Jenny Messerly <jmesserly@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2017-11-04 08:20:24 +00:00
Jenny Messerly 4705eecde1 fix async recursive calls
Change-Id: I5dcc2d030309ee4a8451ccf6313a9559b84a0aaa
Reviewed-on: https://dart-review.googlesource.com/18421
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2017-11-02 21:06:09 +00:00
Jenny Messerly 1dfa9d2320 fix DDC SDK for Symbol.computeUnmangledName
Change-Id: I8b793744339dd934833f6188b5b8267d4dad1746
Reviewed-on: https://dart-review.googlesource.com/17864
Reviewed-by: Jenny Messerly <jmesserly@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2017-11-01 20:38:06 +00:00
Vijay Menon 48cfab5deb Fix source maps for better dev tools hover
Change-Id: Id706a1c5817f174a3b512e5c7e2f29599b078eb8
Reviewed-on: https://dart-review.googlesource.com/17700
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Jenny Messerly <jmesserly@google.com>
2017-10-31 22:09:10 +00:00
Jacob Richman 8b221d13a4 Fix ddc debugger_test Fix regression in custom formatters due to change in metadata signatures to use Object.__proto__ instead of a null __proto__.
Bug:
Change-Id: I68fdb980e777b7c3f335fd6b57181134e3159cc3
Reviewed-on: https://dart-review.googlesource.com/17060
Commit-Queue: Jacob Richman <jacobr@google.com>
Reviewed-by: Jacob Richman <jacobr@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2017-10-31 19:45:27 +00:00
Alan Knight dfcce6d012 Make trapRuntimeErrors false by default
Bug:
Change-Id: I4e631113b00d5c39feaee74f4895a2e1f75641d0
Reviewed-on: https://dart-review.googlesource.com/17620
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Jacob Richman <jacobr@google.com>
Commit-Queue: Alan Knight <alanknight@google.com>
2017-10-31 18:59:59 +00:00
Jenny Messerly 9bd19a49da Fixing renaming on top-level member
Fixes #31117

Change-Id: I7210ceb505963a547e244ae743a99b8688af2e48
Reviewed-on: https://dart-review.googlesource.com/14240
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Jenny Messerly <jmesserly@google.com>
2017-10-28 01:29:38 +00:00
Jenny Messerly 0aa6801f8a fix function type printing in DDC to match VM
Change-Id: I2e15d34c8a40d9ed86b44f5c3db7052fb7c8a783
Reviewed-on: https://dart-review.googlesource.com/14780
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-10-27 22:35:20 +00:00
Bob Nystrom cf8a477cb7 Support test packages in dartdevk in test.dart.
This allows dartdevk to compile tests that import packages like expect.
There are a few pieces to this:

- Add support to build_pkgs.dart to build the kernel summaries for each
  test package (in addition to the analyzer summaries it already
  builds).

- Plumb that through the dartdevc_test target in the GN build as well.

- While we're at it, use GN to build the ddc_sdk.dill file and have
  test.dart load that one instead of the manually built one from calling
  ./tool/kernel_sdk.dart.

- Add command-line arguments to dartdevk for passing in the path to the
  SDK summary and the other summaries to compile against.

- Fix a little typo in processed_options.dart that was preventing it
  from resolving "package:" URIs.

- In test.dart, when compiling a test, link in the summaries for all of
  the test packages.

At runtime, it still uses the JS for those packages generated from the
old analyzer-based front end since the kernel-based compiler isn't
complete enough to compile any of those packages yet.

With all of this, if I change a test to:

  import "package:expect/expect.dart";

  main() {
    Expect.equals("a", "b");
  }

Then it compiles but fails at runtime. The compiler is completing, but
the generated code has some bugs. I don't know enough to fix them
myself, but here's what I've found out:

- In _libraryToModule(), the Library we get from kernel has a null
  fileUri, so this returns an empty string. That in turn means the
  generated JS tries to use "$" as the module name.

  Using this works around it temporarily:

      if (moduleName.isEmpty) moduleName = library.name;

- In _emitTopLevelNameNoInterop(), it doesn't handle the case where the
  NamedNode is a static method on a class. It just generates the library
  and method name, skipping the class, so "Expect.equals(1, 2)" gets
  compiled to "expect.equals(1, 2)" instead of
  "expect.Expect.equals(1, 2)".

Change-Id: I6bd9d98bc9706965160d8fb7cf70b20eeebab3a8
Reviewed-on: https://dart-review.googlesource.com/16687
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-10-27 21:25:58 +00:00
Jenny Messerly 5a4100b595 add a workaround to async/await for DDC's ignore cast fail unsoundness
Change-Id: Ic5e58d31b6b5d46bf74a3c7363e19fca239cdc21
Reviewed-on: https://dart-review.googlesource.com/17040
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2017-10-27 20:12:39 +00:00
Jenny Messerly 77775c5292 Unroll mixins in DDC, so each mixin application is generated
This is for compatibility with Kernel, as well as fixing several bugs,
and generally being a more robust architecture.

This may also perform better than the current design.

Notable fixes include several issues around deferred classes.

Change-Id: I1b6f44ebdf6304b10b47d19026156a25e04146ef
Reviewed-on: https://dart-review.googlesource.com/16337
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-10-27 04:26:44 +00:00
Jenny Messerly 07f189703a Optimize DDC's async/await code to avoid unnecessary zone registration
Other improvements:
* avoids an extra intermediate future in `async`, and unnecessary type tests
* uses optimized type tests instead of older isSubtypeOf
* avoids an extra closure for async/async*
* avoids Function.apply for async/async*/sync*
* avoids an extra cosure for sync* if the arguments are not modified

Change-Id: I897708387fce59a97696f05b01cc668f1043fe5c
Reviewed-on: https://dart-review.googlesource.com/16332
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-10-27 01:07:04 +00:00
Vijay Menon 4f9f77aedc Remove dcall in dart:convert
Seeing this in the hot path on an internal app.

Change-Id: I921f12ece706b4ea92d9a97858fde2799972f653
Reviewed-on: https://dart-review.googlesource.com/15940
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-10-25 18:28:06 +00:00
Bob Nystrom 67ca95fc2c Support different module formats in dartdevk.
Change-Id: I0683c1bdaa5e67332d67f9ec84052851b4b0c649
Reviewed-on: https://dart-review.googlesource.com/15760
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-10-20 23:25:08 +00:00