Commit Graph

5112 Commits

Author SHA1 Message Date
Jaime Wren a1754ff2be TBR Bot fix. Hardcode previewDart2 to be false to have the Dart SDK build.
Change-Id: Ida8e3a720c7a0e06d7ec0297f4ee2ba397899848
Reviewed-on: https://dart-review.googlesource.com/38342
Reviewed-by: Jaime Wren <jwren@google.com>
2018-02-02 21:43:43 +00:00
Jaime Wren c5c5734e13 Implicit new and const work for the analyzer- add support for library prefixes: "prefix.ClassName.[constructorName]?()"
Change-Id: I9f9d59e38123bbbd5e47993a8f416603b77d47fb
Reviewed-on: https://dart-review.googlesource.com/38340
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-02-02 21:08:46 +00:00
Sigmund Cherem f541f060ee [fe] deferred access checks for several access patterns of classes.
This adds checks for allocations and type values, and provides a compile
time error for type declarations, is-checks, and as-casts.

Change-Id: I3bfed41b0dd45abeb02158f0537102c779511998
Reviewed-on: https://dart-review.googlesource.com/36383
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-02-02 20:44:16 +00:00
Jenny Messerly 85cfbebd76 Fix constKeyword usage in DDC in preparation for implicit new/const
Change-Id: Iad3d38449dbe5bbb71d470cf085c2c071432abf5
Reviewed-on: https://dart-review.googlesource.com/38147
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-02-02 20:33:46 +00:00
Brian Wilkerson cb1b28f04f Initial parser work to parse instance creation without a keyword but with type arguments
Change-Id: I23421aa7387f5c249dfa9acbe4cda2f92c3481a2
Reviewed-on: https://dart-review.googlesource.com/38166
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jaime Wren <jwren@google.com>
2018-02-02 18:07:37 +00:00
Jaime Wren e2eb5a332a Additional analyzer test for the implicit new case: "A<T>()"
Change-Id: I98981f948d0b60dc0e652257020bcd7ce833ff41
Reviewed-on: https://dart-review.googlesource.com/38146
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2018-02-01 21:07:18 +00:00
Brian Wilkerson 49e04b7875 Add an isConst getter to TypedLiteral
Change-Id: Ia884fe5aa6ba9b40ba5ef8c342c2312b3dd2ea77
Reviewed-on: https://dart-review.googlesource.com/38140
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-02-01 19:23:38 +00:00
Brian Wilkerson 277724b80a Uncomment accidentally commented out tests
Change-Id: I807e89bafdf3c8d9bdd1ac0834124f9051e9fa44
Reviewed-on: https://dart-review.googlesource.com/38142
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-02-01 18:45:28 +00:00
Brian Wilkerson c8e82b0995 Clean up dead code in recovery tests
Change-Id: I675e2c55a5e9216c6e6b4702a2bd86035009d9cb
Reviewed-on: https://dart-review.googlesource.com/38081
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-02-01 18:06:57 +00:00
Brian Wilkerson 30fa9c93af Clean up AnalysisOptions API
Change-Id: I54b7ba69cc1e03d38844abac7fdba07ba6c3c578
Reviewed-on: https://dart-review.googlesource.com/38080
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-02-01 17:50:38 +00:00
Brian Wilkerson 02fa885504 Add inConstantContext to Expression and use it
Change-Id: I1075afbe99f7d71b42b2a4074827bb91ea195a46
Reviewed-on: https://dart-review.googlesource.com/38001
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-02-01 17:25:08 +00:00
Paul Berry 6ddb483c8e Reverse the order of analyzer code generation
At some point the analyzer code generator for the task dependency
model began depending on summary infrastructure.  Therefore we need to
do summary code generation first.

Change-Id: I123c6bf2a1c5e0cb6f72548243955a714c0c763d
Reviewed-on: https://dart-review.googlesource.com/38000
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-01 16:03:08 +00:00
Jaime Wren 1f4c74dabb Add the new language option in analysis_options.yaml files for enabling the preview-dart-2 flag
Change-Id: I32c090ad1d7696dd18a7db7ee470ea1af5f1ec91
Reviewed-on: https://dart-review.googlesource.com/37921
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2018-01-31 22:45:08 +00:00
Jaime Wren ca0b707d2a Re-worked and refactored the resolution of implicit-new source in the analyzer resolver to make sure that any 'ClassName.methodName()' will not be mistakenly resolved as a constructor invocation.
Before any ASTs are constructed, a lookup happens to see if such a constructor exists, otherwise the AST replacement will not proceed, and even temporary ASTs will not be created: in this way we can add the test test_visitMethodInvocations_not_implicit_constructor.

Change-Id: I01e25af5d1eaec659cf02ca89f8a9a5da334e6a9
Reviewed-on: https://dart-review.googlesource.com/37920
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2018-01-31 22:21:18 +00:00
Brian Wilkerson b74ceb0248 Remove a warning (issue 31351)
Change-Id: Id798aa7ece345970e3bfba15b260df6482a57074
Reviewed-on: https://dart-review.googlesource.com/37861
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-31 20:42:26 +00:00
Brian Wilkerson 1d9ac49dd9 Reland "Add an error when an integer literal is out of bounds"
Change-Id: Id6ef76b47bedabc96fc372f6aea455975dfcc213
Reviewed-on: https://dart-review.googlesource.com/37840
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-01-31 16:50:55 +00:00
Dan Rubel ec7435945d Remove findMemberName from parseTopLevelMember
This CL refactors parseTopLevelMember so that it does not scan ahead
using findMemberName. This is the next step in removing findMemberName
to improve top level declaration recovery.

Change-Id: I4d949f72cba5618541448c08e1756bf45a4d1762
Reviewed-on: https://dart-review.googlesource.com/37680
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-31 12:04:56 +00:00
Jaime Wren 0bca64f57e First draft on API change for support for implicit new and const in the InstanceCreationExpressionImpl class.
Change-Id: Id8df09456689a400957fec15b9f32b8f4f10bab1
Reviewed-on: https://dart-review.googlesource.com/37642
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2018-01-30 20:07:49 +00:00
Jaime Wren 25d0bac724 Initial tests for the implicit new and const constructor support in the analyzer
Change-Id: Ieef3294810520aaa03f6782971ccaaeff6ddb875
Reviewed-on: https://dart-review.googlesource.com/37422
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-01-30 18:57:59 +00:00
Leaf Petersen 991753313f Remove deep future flattening from analyzer and DDC
Change-Id: Ic48f29adec3a46744b259ba5b2b8ad7d97caa6c2
Reviewed-on: https://dart-review.googlesource.com/37424
Reviewed-by: Jenny Messerly <jmesserly@google.com>
2018-01-30 18:11:11 +00:00
Brian Wilkerson d0f105de1a Reland "Produce an error if there would be an exception thrown by an assert in an initializer list"
Change-Id: Id79a8cf949a08d56a59268b687f299f3482a1b88
Reviewed-on: https://dart-review.googlesource.com/37540
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-30 14:40:19 +00:00
Paul Berry e978cd6062 Encapsulate the handling of forwarding stub target references.
As discussed in https://dart-review.googlesource.com/c/sdk/+/34261.

Change-Id: I2af5021ad9738f6bc47bb11d2a1133f303d3ace9
Reviewed-on: https://dart-review.googlesource.com/36481
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-01-30 11:49:38 +00:00
Konstantin Shcheglov da4a20b53e Include parts into libraries being analyzed, even when using external summary store which already has the same part (but not a library).
R=brianwilkerson@google.com

Change-Id: I0d07d217dbd9a0751686375979aaac205df4c6da
Reviewed-on: https://dart-review.googlesource.com/37380
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-01-29 19:42:34 +00:00
Jaime Wren 7af4db0ea0 Implicit new constructor work for the analyzer, behind the previewDart2 flag.
I could not add a test into element_resolver_test.dart as the scope lookup logic does not resolve the type "Object" to the ClassElement for the type Object, that is:

test_visitMethodInvocation_implicit() async {
    // Object()
    InterfaceType obType = _typeProvider.objectType;
    MethodInvocation invocation = AstTestFactory.methodInvocation2("Object");
    // The invocation element in visitMethodInvocation is not resolved to be a
    // ClassElement in this test harness.
  }


This prevents this source from being invoked.

I was however able to get this test, and an accompanying test for named constructors, to work in resolver_test.dart.  It felt like the wrong test file to include so I left the tests out- do advise.

test_visitMethodInvocations_implicitConstructor() async {
    String code = '''
class A {
  A() {}
}
main() {
  var v = A(); // marker
}
    ''';
    CompilationUnit unit = await resolveSource(code);
    AstNode constructorName = findMarkedIdentifier(code, unit, "(); // marker");
    InstanceCreationExpression instanceCreationExpression =
        constructorName.parent.parent.parent;
    expect(instanceCreationExpression, isNotNull);
    expect(instanceCreationExpression, isNotNull);
    expect(instanceCreationExpression.constructorName.type.type, isNotNull);
    expect(instanceCreationExpression.constructorName.staticElement, isNotNull);
    expect(instanceCreationExpression.staticElement, isNotNull);
    expect(instanceCreationExpression.staticType, isNotNull);
  }

Change-Id: I03214c194f1052d000d7f5e840df80d4f66e2a82
Reviewed-on: https://dart-review.googlesource.com/36365
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-01-29 19:25:33 +00:00
Brian Wilkerson c86168ae9b Add more issue-inspired recovery tests
Change-Id: I842afd71a4b47b7f4db17590a2cd35c7886a0961
Reviewed-on: https://dart-review.googlesource.com/37220
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-29 16:16:13 +00:00
Samir Jindel 68554ab8f5 [kernel] Support "dart-ext:..." imports in the CFE.
They are encoded as annotations on the importing library, similarly to
how native methods are encoded.

Change-Id: I4dc1119b20949308e4856666693fe4e890e9ee87
Reviewed-on: https://dart-review.googlesource.com/35660
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-01-29 14:04:25 +00:00
Brian Wilkerson 6a7730827e Add a recover test based on issue 22313
Change-Id: Iae2bdee6e1326e09916f1a1d5b92c93ec9a0c9dd
Reviewed-on: https://dart-review.googlesource.com/37160
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-28 16:10:01 +00:00
Brian Wilkerson f0be71185b Add a recovery test based on an open issue (25875)
Change-Id: I863e5b034b1c258adcbe0ce4434ffbb68dfc34aa
Reviewed-on: https://dart-review.googlesource.com/37141
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-28 16:09:53 +00:00
Brian Wilkerson 3f67ca29da Improve error message (issue 28482)
Change-Id: If8365ea99b190f1d316c0518ae84692a9dce6e57
Reviewed-on: https://dart-review.googlesource.com/37140
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-27 18:37:29 +00:00
Konstantin Shcheglov 8fbcf977e5 Replace license in generated files.
R=devoncarew@google.com

Change-Id: I7511c8da329eba760698a48abc0f8db16038b9ea
Reviewed-on: https://dart-review.googlesource.com/37127
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-01-27 03:18:18 +00:00
Mike Fairhurst cb7e85a26d Support void as a Top type, with as few other changes as possible.
Change-Id: Ife337e28fa86f9b98cdabf48a01a4e2f608aa4b8
Reviewed-on: https://dart-review.googlesource.com/35520
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2018-01-26 22:42:08 +00:00
Brian Wilkerson 7a36d39962 Revert "Produce an error if there would be an exception thrown by an assert in an initializer list" (TBR)
Change-Id: Iece7d75e9245cdb9d0a72ac30f6b1031a76c0755
Reviewed-on: https://dart-review.googlesource.com/37080
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-26 21:54:30 +00:00
Brian Wilkerson fb739fffe6 Produce an error if there would be an exception thrown by an assert in an initializer list (2)
Change-Id: I2f268a23c3d84dfbe4bba67730e226f5b5603570
Reviewed-on: https://dart-review.googlesource.com/32740
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-26 20:15:01 +00:00
Dan Rubel c31758dfee Fasta parser cleanup
Per discussion with Peter, this CL updates all begin* and handleNoType
events to take atleast one token parameter.

* Ensure all fasta parser begin* events take atleast one parameter
* Update handleNoType event to take last consumed token
* Address comment in https://dart-review.googlesource.com/c/sdk/+/36820
* Remove unused skipToLastModifier method

Change-Id: I1be25fe4327a63707f74163fa2b93452d71e7748
Reviewed-on: https://dart-review.googlesource.com/36960
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-26 18:00:54 +00:00
Dan Rubel c284670f54 Refactor fasta parse class member modifiers
This CL moves modifier parsing out of parseMethod and parseFields
into parseClassMember and before findMemberName.
This is the next step in evenally removing findMemberName
and improving top level declaration recovery.

This CL also removes unused parameters from several fasta parser events.
Per discussion with Peter, tokens will be added back to each of these
events in a subsequent CL.

Change-Id: I4ffc0622b75581b5fdb527feeb19ae0b68c4eeaf
Reviewed-on: https://dart-review.googlesource.com/36820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-01-26 13:39:08 +00:00
Paul Berry d68fbb7454 Add new warning StrongModeCode.TOP_LEVEL_INSTANCE_METHOD.
This warning fires if a top level initializer depends on the type of a
method whose type is subject to type inference.  This warning is
needed because the analyzer implementation of top level type inference
doesn't guarantee that the method type will be inferred prior to the
initializer, so it's possible that type inference will produce an
incorrect result.  See #31925 for more details.

Change-Id: Iec048d2638877c16ae11a87eae0382b7352f726c
Reviewed-on: https://dart-review.googlesource.com/36841
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-26 01:10:00 +00:00
Paul Berry 68fd556216 Rework _validateTopLevelInitializer to use a visitor.
The old implementation only validated a whitelisted set of use cases,
so it would often miss important subexpressions.  The new
implementation is based on a RecursiveAstVisitor so by default it
visits all subexpressions; we use overrides for the specific cases
where it's not necessary to visit all subexpressions.

Fixes #31963.

Change-Id: Icb9833f51bef26874f655cd2ba4ffc509bfffef3
Reviewed-on: https://dart-review.googlesource.com/36803
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-25 21:47:46 +00:00
Dan Rubel 2be7b9566f Refactor fasta parse top level modifiers
This CL moves modifier parsing out of parseTopLevelMethod
and parseFields into parseTopLevelMember and before findMemberName.
This is the next step in evenally removing findMemberName
and improving top level declaration recovery.

* New ModifierRecoveryContext2 which will soon replace
   both ModifierContext and ModifierContext2
* Remove now unused TopLevelModifierRecoveryContext
* Remove unused beginTopLevelMethod event arguments
* Remove unused handleNoType event arguments
* Address comment in https://dart-review.googlesource.com/c/sdk/+/36500

Change-Id: I6842a83d9604cdcca611d7209e3ebcc78de469d3
Reviewed-on: https://dart-review.googlesource.com/36680
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-25 00:05:46 +00:00
Paul Berry 1891084dec Generate fresh type parameters prior to inferring an invocation.
This is necessary to avoid confusion when a generic function or method
recursively calls itself.

Fixes #31759.

Change-Id: I4e3be2093e9d6b81f084250435ea7493ca6b2464
Reviewed-on: https://dart-review.googlesource.com/36363
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-24 19:41:58 +00:00
Paul Berry 314b89e11d Update the analyzer to require noSuchMethod overrides to be concrete.
See 38dcb10543 for details.

Change-Id: I00608f7106e1b37cde81b8145d8d748f8cd97804
Reviewed-on: https://dart-review.googlesource.com/36520
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-01-24 13:55:18 +00:00
Dan Rubel d5bd271430 Refactor modifiers in parseFields
This is the next step towards removing findMemberName
and improving class member and top level declaration
recovery.

* Remove modifiers from findMemberName results
* Inline modifier parsing in parseFields
* move non modifier recovery out of ModifierRecoveryContext

Change-Id: I9cb4abd7632021720ba184440f0b1af382e72794
Reviewed-on: https://dart-review.googlesource.com/36500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-24 12:18:28 +00:00
Paul Berry d031b0aecf Remove unnecessary typeNeeded booleans from type inference engine.
Change-Id: I35039a5662e48a983b214ceb3732c3e900396db4
Reviewed-on: https://dart-review.googlesource.com/36380
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-01-23 15:22:58 +00:00
Brian Wilkerson 86b27dd577 Add a hint for unused labels (issue 31930)
Change-Id: I0d2f41fdb8a7399e6664dcf57503de84991c075d
Reviewed-on: https://dart-review.googlesource.com/36181
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-22 18:34:28 +00:00
Konstantin Shcheglov 79868e3b22 Reenable analyzer/test/generated/non_error_resolver_kernel_test.
I don't see that the test is slow, at least anymore.
It takes 9 and 14 seconds in unchecked and checked modes on my Mac.

R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/30796
Change-Id: I6a0453393660fac750a305cb26f837a3354a9cad
Reviewed-on: https://dart-review.googlesource.com/36280
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-01-22 16:21:48 +00:00
Jens Johansen 76eb861729 [fasta] Add Null on the list of classes that cannot be extended
Fixes #31817.

Bug: 31817
Change-Id: I7c2f98efee57724b65692fb0daa59ca12623dbe2
Reviewed-on: https://dart-review.googlesource.com/35601
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-01-19 06:53:57 +00:00
Brian Wilkerson e95486d18e Revert "Add an error when an integer literal is out of bounds"
Change-Id: I2376904a8b92382c0f33212f41c88bafd75f3a15
Reviewed-on: https://dart-review.googlesource.com/35806
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-18 22:40:14 +00:00
Sigmund Cherem e2ad2db805 Generate checks for library-is-loaded to fasta and dart2js.
Change-Id: Ibf453ca7390b81da7231dcb1be43e426c00d6eeb
Reviewed-on: https://dart-review.googlesource.com/35100
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2018-01-18 20:17:14 +00:00
Brian Wilkerson cf7efddb0b Add an error when an integer literal is out of bounds
Change-Id: I8bc9e6e03d76822785f254ec346d82983ea63f2c
Reviewed-on: https://dart-review.googlesource.com/31841
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-18 17:30:54 +00:00
Peter von der Ahé 3fcede3c7f Short-term hack to work around issue with duplicated interfaces.
See dartbug.com/31656

Change-Id: I017085953c5ac41d2cfd7368752918c6fcb51144
Reviewed-on: https://dart-review.googlesource.com/33884
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2018-01-18 14:10:15 +00:00
Dan Rubel 69dfe14453 Improve local modifier recovery
In addition to inlining and improving local modifier recovery,
this CL also cleans up several tests and addresses comments
in https://dart-review.googlesource.com/c/sdk/+/35300

Change-Id: Icf0ad8afdb923e52f43e4d8fa91b1731ab99089c
Reviewed-on: https://dart-review.googlesource.com/35500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-18 12:18:56 +00:00