Commit Graph

4276 Commits

Author SHA1 Message Date
Konstantin Shcheglov 0cda3efd87 Set FunctionDeclaration.name type in DeclarationResolver.
Also set the type of VariableElement when we see its type in applier.

R=brianwilkerson@google.com

Bug:
Change-Id: I650c839bfab23e4ced468f8748281e9ffc72907a
Reviewed-on: https://dart-review.googlesource.com/22281
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-11-21 02:46:57 +00:00
Konstantin Shcheglov e67cd0daab The very first CL for end-to-end integration of FrontEnd resolution into Analysis Server.
At this point KernelDriver is used only by Analyzer, so I don't include
anyone from the FrontEnd team. We will merge to get the same performance
benefits of the latest IKG approach, but later.

Only just enought integration is done - we can store and apply
types in the local variable declaration.

Everything is in disarray, I will follow up with improvements.


R=brianwilkerson@google.com, paulberry@google.com

Bug:
Change-Id: Ie3434e26233b84fb019c50a7cc834a08d0dadbed
Reviewed-on: https://dart-review.googlesource.com/22202
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-11-20 22:42:09 +00:00
Paul Berry f1959d6cd4 Implement support for generic comment syntax in Fasta.
Change-Id: I4c15a4adf2dbb50efd799b801dcb75a538bbe7d6
Reviewed-on: https://dart-review.googlesource.com/21223
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2017-11-20 22:01:27 +00:00
Brian Wilkerson 56ac62bdcc Convert Parser.parsePrimary
Change-Id: I84bf93b89487254f887f4d8390aff45f93b64cba
Reviewed-on: https://dart-review.googlesource.com/22180
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-20 20:27:07 +00:00
Brian Wilkerson 9fe83f779e Convert Parser.parseFunctionBody and two related methods
Change-Id: I3c1e8a83816f180c116a7fcd99b16ac18f50d453
Reviewed-on: https://dart-review.googlesource.com/21860
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-20 14:15:57 +00:00
Brian Wilkerson 5adb7c9796 Convert three more methods and add a TODO
Change-Id: I974f71a2b64fb32799f642dd64b6975e8a1ef341
Reviewed-on: https://dart-review.googlesource.com/21840
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-18 20:47:07 +00:00
Dan Rubel 783190248a Add fasta parser missing name recovery
* update parser missing parameters error message
* update AstBuilder to insert () when needed
* reorder error converter mapping

Change-Id: Ibe57615f8f06644210c6b8babb8a7c1aa4a60fb3
Reviewed-on: https://dart-review.googlesource.com/21792
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-18 18:47:36 +00:00
Dan Rubel f6acd76f94 Add fasta parser missing operator keyword recovery
Change-Id: I940fa31a006dc088b8f4166a9e3e48bcf65a5341
Reviewed-on: https://dart-review.googlesource.com/21500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-16 21:28:12 +00:00
Brian Wilkerson 5591f802ae Return the last consumed from several more methods
Change-Id: I2b56b98dfbb596f60bb04efc84ead1c5848d4faf
Reviewed-on: https://dart-review.googlesource.com/21101
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-16 15:27:43 +00:00
Dan Rubel 8e1e24b642 Add fasta parser binary expression recovery
Change-Id: I6345bd29fa00d0f4a2a6474f1d26e7c60661cef0
Reviewed-on: https://dart-review.googlesource.com/21100
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-15 15:54:02 +00:00
Dan Rubel b5df8d7b0f Add fasta parser recovery for invalid operator name
Change-Id: I10e7f2668f654f7be482b3ce1521d1872d6a6b34
Reviewed-on: https://dart-review.googlesource.com/20826
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-15 15:49:22 +00:00
Brian Wilkerson 4b1bf629e6 Convert parseType to return the last consumed token
Change-Id: I5047b6dbe2a308c8465ee74ea6d3607f32d8547f
Reviewed-on: https://dart-review.googlesource.com/20322
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-14 16:55:14 +00:00
Konstantin Shcheglov e2e15f0642 Issue 31364. Add support for --preview-dart-2 flag in Analysis Server.
You don't want to turn it on yet.

R=brianwilkerson@google.com, devoncarew@google.com

Bug: https://github.com/dart-lang/sdk/issues/31364
Change-Id: I37639181e500298d38beee6d9f91330c7465b14a
Reviewed-on: https://dart-review.googlesource.com/20640
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-14 08:22:15 +00:00
danrubel 40f08185ad Update analyzer parser tests for fasta integration
This updates the base analyzer parser tests so that they can be run
when the fasta parser is enabled using -DuseFastaParser=true

Change-Id: I24904e453b62091a7b1960fa064e7a7653ca3fee
Reviewed-on: https://dart-review.googlesource.com/20620
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-14 01:11:01 +00:00
Mike Fairhurst 131cde88bc Fix #31107, crash using generic function syntax in field formal params.
Only fails under the new analysis driver. Flipped all
resolver_test_cases to run under the new analysis mode by default since
that's the default case these days.

Aside from that, the change is pretty small/simple/safe: just had to
resolve type declarations in FieldFormalParameters in two places to
handle both named and non-named forms.

Bug: 31107
Change-Id: I45352f921085e32b53bda1ebcf74a0d51b82e67a
Reviewed-on: https://dart-review.googlesource.com/20561
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2017-11-14 00:56:00 +00:00
Brian Wilkerson e9ff04ae7e Convert several methods related to parsing directives
Change-Id: Ice76e65b4d5798096fa4ceb85a8cb5efe85290e8
Reviewed-on: https://dart-review.googlesource.com/20121
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-10 22:54:24 +00:00
Brian Wilkerson 711eefbdf5 Accept the last consumed token in three methods
Change-Id: I4a0c85ef2e482b4bf03193cf057f7188e803fcba
Reviewed-on: https://dart-review.googlesource.com/20240
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-10 20:41:10 +00:00
YoungSeok Yoon 483406fbc0 Fix type mismatch in ScopedVisitor
The return type of visitGenericTypeAliasInFunctionScope() method had a
mismatch between the ScopedVisitor and ResolverVisitor.

Change-Id: I591845c24de4c33c054f289805ccd2391ba41933
Reviewed-on: https://dart-review.googlesource.com/19802
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-10 18:21:38 +00:00
Brian Wilkerson 861c927235 Return the last consumed token from parseExpression and parseExpressionWithoutCascade
Change-Id: I62bc65351f3b8a0de230f4fa1b4c21cde1e9b67c
Reviewed-on: https://dart-review.googlesource.com/20180
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-10 18:13:29 +00:00
Brian Wilkerson 9f730ecbc8 Return the last consumed token from seven methods
Change-Id: I53ad977e3c68ea9ed583fd89cc798ab75b9d0b0f
Reviewed-on: https://dart-review.googlesource.com/20120
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-10 16:55:08 +00:00
Dan Rubel e2e3c99aea Cleanup remaining analyzer parser adapter methods
* update parseStatement to use new API
* remove unused _run and _runParser methods
* rename _run2 --> _run

Change-Id: I288f8d4d03acce817f2e11671dc22642f60e57dd
Reviewed-on: https://dart-review.googlesource.com/19900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-10 14:52:08 +00:00
Dan Rubel a08cd4f92f Move more analyzer parser adapter methods
* add parsePrimaryExpression and update tests to use it
* rework formatParameterList tests to use new API
* update expression tests to use new parser adapter API
* rework parseConstructorInitializer to use new proxy API
* move parseTypeParameter and parseTypeParameterList

Change-Id: I58b45999ae9e194d0b7728b7e82cb2b55f2281c3
Reviewed-on: https://dart-review.googlesource.com/19820
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-11-09 23:33:12 +00:00
Dan Rubel 8e8e7737a9 Move more analyzer parser adapter methods
* parseTopLevelDeclaration
* parseTypeAnnotation
* parseTypeArgumentList
* parseTypeName

Change-Id: I7f9530e963cec4d0eb0598ceaba453945a79b777
Reviewed-on: https://dart-review.googlesource.com/19761
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-09 21:26:32 +00:00
Dan Rubel d0649bd38c Move more analyzer parser adapter methods
* parseConfiguration
* parseFormalParameterList
* parseFunctionBody
* parseStatement

Change-Id: I0b08fc71a795ccb8539d95cf950e742917d9091d
Reviewed-on: https://dart-review.googlesource.com/19720
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-11-09 20:23:42 +00:00
Dan Rubel 5a5a8bea9a Move more analyzer parser adapter methods
* parseAnnotation
* parseArgumentList
* parseClassMember
* parseCombinators

Change-Id: I8fe2e6499f8bb051ef4da025131b445244913172
Reviewed-on: https://dart-review.googlesource.com/19620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-09 16:03:38 +00:00
Konstantin Shcheglov 6a11149ef1 Rewrite KernelDriver to use outlines of direct dependencies.
For now only getKernel() uses the new compilation method.

There are several new failing tests because redirection factories
are not serialized/deserialized correctly yet (but I saw kernel
support comming for it), and outlines don't include private fields (
which we want to work around by storing just names).


R=paulberry@google.com, sigmund@google.com

Bug:
Change-Id: I0d964862066ac0ee9e7b5c7b1d3802171a874aef
Reviewed-on: https://dart-review.googlesource.com/19440
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-11-09 02:36:42 +00:00
Dan Rubel a322a35429 Merge analyzer parser adapters
This CL starts merging functionality in the analyzer parser adapter
with identical functionality in the analyzer tests.

Change-Id: Ia74f0f67319a4dba67a24a27a65a2c2c32d0a2a4
Reviewed-on: https://dart-review.googlesource.com/19453
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-09 01:43:53 +00:00
Konstantin Shcheglov edeff13298 Always use ImportDirective namespaces to find unused imports.
We don't keep export directives for libraries in kernels. But we know
which elements are exported, so we can build export namespaces.

R=brianwilkerson@google.com, paulberry@google.com

Bug:
Change-Id: I7db4e89b8f5032664cf38304675e1dabb6457a44
Reviewed-on: https://dart-review.googlesource.com/19101
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-08 02:16:15 +00:00
Konstantin Shcheglov c055c64e0f Only accessible constructors should be copied into mixins.
R=brianwilkerson@google.com, paulberry@google.com

Bug:
Change-Id: I6143dd084192880ce59e8aa95566e9bd74a2a81f
Reviewed-on: https://dart-review.googlesource.com/18900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-11-06 20:43:58 +00:00
Konstantin Shcheglov 5ea30b4e3d Rename performace_logger.dart to performance_logger.dart
R=paulberry@google.com, sigmund@google.com

Bug:
Change-Id: Ib7b6d122dff3ddabde3db2270daa777a269e04ed
Reviewed-on: https://dart-review.googlesource.com/18512
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-03 20:24:00 +00:00
Konstantin Shcheglov 611475aaaa Separate KernelDriver.getKernel() and getKernelSequence().
The reason to have both is that IKG needs kernels for all libraries,
potentially not even deserialized from bytes, if we eventually get this
optimization.

OTOH, Analyzer always needs just one library, with enough outlines
to make sense of the dependencies. For now, getKernel() is implemented
using getKernelSequence(), this will change with switching to
outline based compilation.

R=paulberry@google.com, sigmund@google.com

Bug:
Change-Id: Iba02bc3a4cdb67a896c4faa2f809c7cb8069aa9e
Reviewed-on: https://dart-review.googlesource.com/18509
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-03 20:00:01 +00:00
Dan Rubel 15a0abf956 Fix OutlineBuilder native class and AnalyzerDietListener tests
Update the OutlineBuilder and AstBuilder to fix native handling,
and in the process, fix several AnalyzerDietListener tests.

Fix https://github.com/dart-lang/sdk/issues/30836

Change-Id: I7e3b6c4c7d241f1325a5fce1e117e277c6166e49
Reviewed-on: https://dart-review.googlesource.com/18500
Reviewed-by: Paul Berry <paulberry@google.com>
2017-11-03 17:16:51 +00:00
Konstantin Shcheglov ec4ffb99f5 Use one large AST cache with task model.
I found that the issue with Dart indexer is related to flushing
partially resolved ASTs from the cache, which we don't handle correctly.
Instead of trying to fix the issue, we can just increase the cache
size and make indexer work for now. Eventually we should migrate to
AnalysisDriver, which does not have this problem.

R=brianwilkerson@google.com, jwren@google.com

Bug:
Change-Id: I7515fd132245c361e030ddf1bfa7e06f11b6f3a4
Reviewed-on: https://dart-review.googlesource.com/18422
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-02 21:22:39 +00:00
Brian Wilkerson c0f81029a3 Extract error translation and re-enable completeness test
Change-Id: Ic78139f46a56f5b37d5569af712071ee8ae5fed9
Reviewed-on: https://dart-review.googlesource.com/18148
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-02 16:34:09 +00:00
Dan Rubel e781b33c83 move Analyzer test classes out of lib
This moves several classes used only for testing purposes
out of the analyzer/lib directory tree and
into front_end/test/fasta/testing where they are used.

Change-Id: I294b20710de4b16e27fbea5d13be316a6ecda112
Reviewed-on: https://dart-review.googlesource.com/18200
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-11-02 16:02:58 +00:00
Brian Wilkerson 1e6490dbef Return last committed from parseTopLevelMember, parseTopLevelKeywordDeclaration, and parseTopLevelDeclarationImpl
Change-Id: If9fe159f4926c250cf06937cea9f1f4a78e21269
Reviewed-on: https://dart-review.googlesource.com/18003
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-01 20:31:36 +00:00
Konstantin Shcheglov 9def9444cd Stop storing the parent node in AnalyzerMetadata.
We don't actually need it, and using any node disables lazy Kernel
loading.

R=brianwilkerson@google.com

Bug:
Change-Id: Ie92aa6c101c4b94c3585fc1ab7879ca2b6db6053
Reviewed-on: https://dart-review.googlesource.com/17983
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-01 19:10:04 +00:00
Konstantin Shcheglov a3ea40eb3b Fix for covariant function typed parameters with void return type.
R=brianwilkerson@google.com

Bug:
Change-Id: I8e46ebd0afb7d9812016bae584a2f53066e15019
Reviewed-on: https://dart-review.googlesource.com/17982
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-11-01 18:58:35 +00:00
Brian Wilkerson f95e1475fc Remove the unused Listener.beginDottedName
Change-Id: I1c5752a9610f21dad62db6655972b4006ce632e9
Reviewed-on: https://dart-review.googlesource.com/17862
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2017-11-01 18:35:45 +00:00
Brian Wilkerson 87a096e992 Remove the unused Listener.beginIdentifierList
Change-Id: I3644aaff3fa7a8a97b9e9bcc83f549f628a1fb71
Reviewed-on: https://dart-review.googlesource.com/17861
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-01 17:21:05 +00:00
Brian Wilkerson 8d9243b4f9 Fix an assertion to be stronger
Change-Id: Ie7a3fd7206b9b2a6acb8685e887ea53e31b0e4c5
Reviewed-on: https://dart-review.googlesource.com/17860
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-11-01 16:47:45 +00:00
Brian Wilkerson dd18ef841b Parser conversion, part 3
Change-Id: Ibe48da9bfa89887fb04a4b958b913fe7c0087cf1
Reviewed-on: https://dart-review.googlesource.com/17600
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-11-01 16:32:45 +00:00
Konstantin Shcheglov 593d4b3087 Catch exceptions during parsing and store exception context.
It seems that we need, at least temporary, catch scanning / parsing
exceptions and store the exception and the corresponding content
in crash contexts.

R=brianwilkerson@google.com, danrubel@google.com

Bug: https://github.com/dart-lang/sdk/issues/31098
Change-Id: Id3390b0f39acf13f44777ec9156fb237d14c57e8
Reviewed-on: https://dart-review.googlesource.com/17561
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-10-31 21:13:36 +00:00
P.Y. Laligand a28d599ab6 [gn] The Fuchsia build dir path may be relative.
Change-Id: I21f29233406ce6bb12c9fb2a95d5d988e85b5bf2
Bug:
Reviewed-on: https://dart-review.googlesource.com/17641
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-31 19:23:17 +00:00
Paul Berry c084df4747 Remove deprecated DirectoryBasedDartSdk.
This class has been deprecated for over a year, and I believe all uses
of it have been removed.

Change-Id: I42c39339b08bb98271000c2a459d3045388ec9ce
Reviewed-on: https://dart-review.googlesource.com/17520
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-31 17:13:40 +00:00
Brian Wilkerson b6ef64ffbd Parser conversion, part 2
Change-Id: I7fb782d5f9ac9a3ac024da953f1e72faa6e557b3
Reviewed-on: https://dart-review.googlesource.com/17280
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-31 17:05:35 +00:00
P.Y. Laligand abe4ef0cb2 [gn] Use a config file to locate the Fuchsia build directory.
Change-Id: Ia849f95455cff096c64f4b023990285c47900222
Bug:
Reviewed-on: https://dart-review.googlesource.com/17341
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-31 16:57:24 +00:00
Brian Wilkerson 0f25913463 Remove unused error code
Change-Id: I178aa3f70108eda870aba2f75a93e2a833a94915
Reviewed-on: https://dart-review.googlesource.com/17480
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-31 15:33:26 +00:00
P.Y. Laligand 9283ed238c [gn] Look for packages in the Dart "toolchain".
Change-Id: I8f4164c5f767bbb45c8e2297c0e97a34651004b3
Bug:
Reviewed-on: https://dart-review.googlesource.com/16336
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-30 19:20:53 +00:00
Dan Rubel a2c5217e8d Update several fasta/analyzer covariant and type errors
* report "missing const, final, var, or type" error in several situations
* fix several top level covariant errors
* report final and covariant error

Change-Id: Iffe313c1b3cd2413be5f7763cb726436722e6a74
Reviewed-on: https://dart-review.googlesource.com/17140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-30 13:28:46 +00:00