Commit graph

1873 commits

Author SHA1 Message Date
Asger Feldthaus 49746d5092 [kernel] Remove ProcudureKind.IndexGetter and IndexSetter.
They are now ProcedureKind.Operator.

BUG=
R=kustermann@google.com

Review URL: https://chromereviews.googleplex.com/433267013 .
2016-05-27 11:27:19 +02:00
Asger Feldthaus b61129ee84 [kernel] Support interface member resolution in class hierarchy.
This is useful for handling of externals in tree shaking and type
propagation.

BUG=
R=ahe@google.com

Review URL: https://chromereviews.googleplex.com/435947013 .
2016-05-27 11:25:00 +02:00
Asger Feldthaus c5649381a8 [kernel] Document that variable declaration statement must be in a Block.
BUG=
R=kmillikin@google.com

Review URL: https://chromereviews.googleplex.com/437797013 .
2016-05-25 16:49:39 +02:00
Asger Feldthaus 9e4e37a4ae [kernel] Add more convenience methods and tweak the behavior of toString().
Also contains a bugfix for a missing visitor call.

BUG=
R=ahe@google.com

Review URL: https://chromereviews.googleplex.com/438627013 .
2016-05-25 13:56:43 +02:00
Asger Feldthaus e340a3b0ac [kernel] Implement DartType.hashCode and add some tests.
BUG=
R=ahe@google.com

Review URL: https://chromereviews.googleplex.com/437757013 .
2016-05-25 13:09:59 +02:00
Asger Feldthaus c3bb92a04f [kernel] Support redirecting factory constructors.
BUG=
R=ahe@google.com

Review URL: https://chromereviews.googleplex.com/434877013 .
2016-05-25 12:56:25 +02:00
Asger Feldthaus c4d30e587f [kernel] Ensure dart:core is always loaded when loading whole programs.
BUG=
R=kustermann@google.com

Review URL: https://chromereviews.googleplex.com/422447013 .
2016-05-24 17:27:40 +02:00
Peter von der Ahé 94342127fe [kernel] Suppress dart2js hint about hashCode.
R=asgerf@google.com

Review URL: https://chromereviews.googleplex.com/433597013 .
2016-05-19 13:40:48 +02:00
Peter von der Ahé 32c66ac737 [kernel] Update name in comment.
R=asgerf@google.com

Review URL: https://chromereviews.googleplex.com/432727013 .
2016-05-19 13:32:00 +02:00
Peter von der Ahé 2fc2b9c1cb [kernel] Fix typo in IndexAccessors.indexAccess
R=asgerf@google.com

Review URL: https://chromereviews.googleplex.com/428207013 .
2016-05-19 13:20:33 +02:00
Asger Feldthaus c7606c752c [kernel] Flag external static procedures as external.
BUG=
R=kustermann@google.com

Review URL: https://chromereviews.googleplex.com/426927013 .
2016-05-13 13:46:43 +02:00
Asger Feldthaus 77d0b4b244 [kernel] Support member resolution in class hierarchy.
Review URL: https://chromereviews.googleplex.com/417107013 .
2016-05-09 14:12:40 +02:00
Asger Feldthaus c808dd897c [kernel] Allow variable declarations that are not direct children of a block.
For example:

  if (foo) var x = 5, y = foo(x);

Becomes:

  if (foo) {
    var x = 5;
    var y = foo(x);
  }

BUG=
R=kmillikin@google.com

Review URL: https://chromereviews.googleplex.com/419297013 .
2016-05-04 13:38:04 +02:00
Asger Feldthaus c1e99a7b9e [kernel] Avoid using empty strings as library names.
Previously, anonymous libraries would have an empty name when loaded
from Dart, but a null name when loaded from binary.

The textual printer will use synthetic names for null, but not for empty
names, so we should prefer null.

BUG=
R=kmillikin@google.com

Review URL: https://chromereviews.googleplex.com/419187013 .
2016-05-03 12:59:16 +02:00
Asger Feldthaus 78fea36888 [kernel] Add codereview.settings 2016-04-29 12:58:45 +02:00
Asger Feldthaus afd71681e9 [kernel] Do not use the return value from calls to '[]='.
If an index assignment occurs where its result is used, we bind
the value in a 'let' to reuse the value.

For example:
  return x[y] = z

would become:
  return let #x = x
      in let #y = y
      in #x.[]=(#y, z)

but now becomes:
  return let #x = x
      in let #y = y
      in let #z = z
      in let #dummy = #x.[]=(#y, #z)
      in #z

It clearly looks worse, but it makes the semantics of MethodInvocation
node a lot more uniform when there is no special case for invoking a
method named '[]='.
2016-04-29 10:03:57 +02:00
Asger Feldthaus 272a9e51c6 [kernel] Avoid creating a 'let' binding for 'this' in property and index access.
Some analyses can perform special treatment of 'this' accesses, so we
should preserve them when desugaring.

For example:
  this.foo += 1

would become:
  let #1 = this in #1.foo = #1.foo.+(1)

but now instead becomes:
  this.foo = this.foo.+(1)
2016-04-29 08:43:13 +02:00
Asger Feldthaus a117d3f8f7 [kernel] Add 'const' modifier to StaticInvocation.
This is to distinguish constant calls to an external constant factory.

This changes the binary format.
2016-04-28 12:58:42 +02:00
Asger Feldthaus 6f060282f4 [kernel] Support external constant factories such as String.fromEnvironment.
Also fixes a bug in translation of factory calls.
2016-04-28 12:29:40 +02:00
Asger Feldthaus 3bcde6d532 [kernel] Handle redirecting factory constructors.
Redirecting factories are desugared to a factory procedure with a
return and call in the body.

Constant calls to a constant redirecting factory are redirected at the
call-site to the effective target, which must be a constant constructor.
2016-04-28 09:37:22 +02:00
Asger Feldthaus bc46000f4b [kernel] Make test package use ^ and fix a comment 2016-04-27 16:44:25 +02:00
Asger Feldthaus 811a47d430 [kernel] Initial implementation of Dart Kernel.
Contains:
- Command-line tool
- Kernel AST
- Binary serialization
- Printing as text
- Frontend based on analyzer
- Class hierarchy and type algebra
2016-04-26 10:39:15 +02:00
Asger Feldthaus 953adb31fa [kernel] Initial commit. 2016-04-26 10:29:55 +02:00