Commit Graph

394 Commits

Author SHA1 Message Date
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
John Messerly d3932e1c50 Add a few more known non-null cases
Improves handling of identifiers and known elements, the `identical` function, and generative constructors.

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

Review URL: https://codereview.chromium.org/1752193002 .
2016-03-02 13:32:27 -08:00
John Messerly 67b24939cd refactor/simplify nullable inference code
Some of the high level changes are:
* visit catch body, fixes #463
* handle temps created by the compiler. These were in some cases treated incorrectly as non-null (see tests diff)
* compute nullable in the same pass as visiting assignments
* simplify visiting += and ++, fix ++ (it was dead code, #463)
* simplify _isNullable
* if we fail to see a variable declaration, treat it as nullable
* stack trace in catch is treated as non-null

R=vsm@google.com

Review URL: https://codereview.chromium.org/1751963002 .
2016-03-01 16:44:05 -08:00
John Messerly abf6065dc2 more function refactoring
Two more small bug caught/fixed in the process:
* Dart lambdas must generate as `=>` functions or we'll get the wrong `this`
* Another case where generators we using destructuring in a mismatched way

R=vsm@google.com

Review URL: https://codereview.chromium.org/1736723002 .
2016-02-24 16:54:07 -08:00
John Messerly ca46b80811 simplify generation of functions
fixes incorrect destructuring codegen, and encapsulates type parameter comments better in _emitFunctionBody

R=vsm@google.com

Review URL: https://codereview.chromium.org/1729933002 .
2016-02-24 09:18:46 -08:00
John Messerly d959316526 refactor: avoid parts
we try to avoid "parts" except in js_ast (because that will be split out into its own package)

R=vsm@google.com

Review URL: https://codereview.chromium.org/1724463003 .
2016-02-22 16:01:35 -08:00
Vijay Menon ce985ef38d Support StackTrace.current
This was recently added to the Dart SDK.  Breaking Angular in DDC via stack_trace package.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1720473002 .
2016-02-19 14:25:21 -08:00
Vijay Menon 93a627bf44 Wrapperless dart:html and friends
This reuses the dart2js code.

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

Review URL: https://codereview.chromium.org/1700153002 .
2016-02-18 13:57:59 -08:00
Vijay Menon a9bcaf6c5b Fix travis
This also regens based on the latest analyzer.  Looks like most improvements on the code.

See #456

TBR=jmesserly@google.com

Review URL: https://codereview.chromium.org/1710583002 .
2016-02-17 13:12:52 -08:00
Olivier Chafik 8a28ce3c65 Introduce _emitParameterReferences to avoid mixing params with param references.
BUG=
R=vsm@google.com

Review URL: https://codereview.chromium.org/1701583003 .
2016-02-16 14:39:15 +00:00
Vijay Menon fce423e295 Get travis back to green
Just commenting out the pub run test step.

TBR=ochafik@google.com

Review URL: https://codereview.chromium.org/1690393003 .
2016-02-12 12:18:51 -08:00
Vijay Menon 3f85417199 Support for dart:typed_data
Fixes #441
Fixes #444

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1680263002 .
2016-02-11 14:36:27 -08:00
Olivier Chafik 4ad758998a Emit TypeScript / Closure ES6_TYPED type annotations in --closure mode (instead of closure comments).
- Replaced ClosureType by a general JS.TypeRef, used in AST for identifier types, return types
- Convert DartType to JS.TypeRef (in mixin JsTypeRefCodegen), including type parameters (also added to AST in Fun & ClassExpression)
- Emit field declarations expected by TS
- Wrote a TypeScriptTypePrinter (mixed in by Printer) and a ClosureTypePrinter (might disappear soon)
- Simplified annotation code, called in more places (seems to gives more source info)

Example input:

  List/*<T>*/ func/*<T>*/(List/*<T>*/ items, dynamic/*=T*/ seed) {}

  class Foo<T> {
    int i;
    static var x;
    Foo(this.i, o, {String v : "?"}) {}
  }

Output:

  function func<T>(items: core.List<T>, seed: T): core.List<T> {}

  const Foo$ = dart.generic(function(T) {
    class Foo<T> extends core.Object {
      i: number;
      static x;
      Foo(i: number, o, {v = "?"}: {v?: string} = {}) {
        this.i = i;
      }
    }
    ...
    Foo.x = null;
    return Foo;
  });

Known remaining issues:
- typedefs expect a `type Callback = (...) => ...;` statement
- `exports` is a reserved keyword in TS (either we change the way we do exports, or we'll need a different temp + extra type annotations of the default-exported object).
- Generic type is currently locked inside the generic call. Might be able to solve by exporting signatures in .d.ts file, or changing the way we do generics.

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1676463002 .
2016-02-10 18:22:21 +00:00
Olivier Chafik 0afdd61031 Improve --destructure-named-params:
- Destructure named params that clash with JS reserved names:
  `f({arguments = 1}) {}` becomes `function f({['arguments']: arguments$ = 1} = {}) {}`
- Use ES6 default params for positional & optional parameters
- Added simple tests

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1677863002 .
2016-02-09 16:46:32 +00:00
Vijay Menon a4d4a8dd54 Infra for running lib tests
This is in prep for #441

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1673863002 .
2016-02-05 14:49:16 -08:00
Olivier Chafik 98b21b030e Revert "Use a symbol for static length/name (and other Function properties) for Closure, to avoid ES5->ES6 lowering bug (https://github.com/google/closure-compiler/issues/1460)."
This reverts commit a637e1b048487629d0d44620eb41e703531ce18d.
2016-02-03 20:35:59 +00:00
Olivier Chafik 84043ffd1e Use a symbol for static length/name (and other Function properties) for Closure, to avoid ES5->ES6 lowering bug (https://github.com/google/closure-compiler/issues/1460).
This is part of the overall "simple closure" effort (issue #312)

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1630963003 .
2016-02-03 20:25:07 +00:00
Olivier Chafik f7f21ca65e Create local alias for super class in --closure mode (issue #312)
Closure compiler chokes on super classes that aren't qualified paths.

(example: http://goo.gl/5mHC7S)

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1638533004 .
2016-02-03 20:21:12 +00:00
John Messerly dee054e23b fixes #415, correct type for map literals
Not sure why this wasn't implemented. Lists seem to be okay.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1611753002 .
2016-02-01 15:39:54 -08:00
John Messerly f43b756b2f fix #43, remove => workaround
also fixes node.js test to use a temp directory, instead of creating "tmp" under dev_compiler checkout

R=vsm@google.com

Review URL: https://codereview.chromium.org/1643523008 .
2016-02-01 12:54:58 -08:00
Vijay Menon 0fbd992505 Builds / serves multiple HTML files.
With this, I can build multiple Angular samples simultaneously:

[dist/dart/playground/build/web] dart ~/git/dev_compiler/bin/dartdevc.dart -o /tmp/ddc-out --force-compile src/*/index.html

Fixes #430

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1645343002 .
2016-01-29 10:13:28 -08:00
Olivier Chafik edaf069dba Add --modules=node support
- Force import order in all sdk files + simplify module builders
- Stub a node_test.sh with hello world + DeltaBlue (to be expanded to language tests in a followup change)
- Use global_ from dart:_runtime in html lib
- Better export for symbols that node chokes upon: throw, const, void, implements, export... (define as throw_ locally, with proper local resolution, then export as throw).
- Cleanup node module builder

BUG=
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1633003002 .
2016-01-29 10:01:48 +00:00
Vijay Menon b56617b947 Add CustomEvent
This just mechanically adds CustomEvent.

Fixes #423

R=jacobr@google.com

Review URL: https://codereview.chromium.org/1616263005 .
2016-01-28 17:04:13 -08:00
Vijay Menon a693930830 Roll analyzer to 0.27.2-alpha.1
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1641643004 .
2016-01-28 15:35:59 -08:00
Vijay Menon c274b6f9e9 Regen tests
Forgot to do this after changing the flatten tests.  pkg:collection also updated with some file moves.

R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1642903004 .
2016-01-28 14:39:15 -08:00
Vijay Menon bd34d574be Skip flatten tests
R=jmesserly@google.com

Review URL: https://codereview.chromium.org/1643003003 .
2016-01-28 14:24:05 -08:00