Commit Graph

6103 Commits

Author SHA1 Message Date
Konstantin Shcheglov 9e3bcc4cec Report MIXIN_INSTANTIATE when a mixin is instantiated.
R=brianwilkerson@google.com

Change-Id: Ia19d69bd7f0212bcdfb37f228046c727a36d62e3
Reviewed-on: https://dart-review.googlesource.com/74042
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-09 17:04:48 +00:00
Paul Berry 9795cd9613 Remove uses of DartType from const expression serialization.
These types were used long ago when we sometimes generated summaries
from an element model; they haven't been used in a long time.

Change-Id: I73d5e52cc3c35ce1d5ebb68bae59c8a795ce279f
Reviewed-on: https://dart-review.googlesource.com/74013
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-08 00:02:59 +00:00
Paul Berry 13efc4f8d8 Convert test_strategies.dart to triple-slash comment style.
Change-Id: Ia6c1756d147040fec07aaed1f547b6b2c4a495b2
Reviewed-on: https://dart-review.googlesource.com/74011
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-07 23:14:11 +00:00
Konstantin Shcheglov c29ec5994c Resolve super invocations in mixin declarations.
R=brianwilkerson@google.com

Change-Id: I81dddc8187a13a17db91f77dc0df19248db7d45b
Reviewed-on: https://dart-review.googlesource.com/74007
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-07 20:06:21 +00:00
danrubel a9cc6f0f19 Revise with clause event handling
This replaces the begin/endMixinApplication events which were used in both
```
  class A = B with M;
```
and
```
  class A extends B with M { }
``
with different events for each of the above situations.
This change facilitates properly handling class declarations of the form
```
  class A with M { }
```

Removed event:
* beginMixinApplication
* endMixinApplication

Added events:
* handleNamedMixinApplicationWithClause
* handleClassWithClause
* handleClassNoWithClause

Change-Id: Ifa0ecfd7ff8c408087ad78036ad35ba4a00728c6
Reviewed-on: https://dart-review.googlesource.com/73940
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-09-07 19:33:51 +00:00
Konstantin Shcheglov 1e65a6fa7f Check for conflicts of constructors and static members.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34371
Change-Id: I55494cbb770dbdc1418cac9c74672ebbab7ab24d
Reviewed-on: https://dart-review.googlesource.com/74004
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-07 18:33:15 +00:00
Brian Wilkerson fe5a99dd75 Add hover support for mixin declarations
Change-Id: Ia42f39aec7b001264ae69043fe76ceb2c79b76cb
Reviewed-on: https://dart-review.googlesource.com/73960
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-09-07 17:52:45 +00:00
Konstantin Shcheglov cbab413950 Collect super-invoked names for mixin declarations.
We need this to support the following requirement in the mixin
specification:

It's a compile-time error to apply a mixin containing super-invocations
to a class that doesn't have a concrete implementation of the
super-invoked members.

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

Change-Id: Ib683794fe7101222863b34956619773e2af52d1a
Reviewed-on: https://dart-review.googlesource.com/73780
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-07 14:25:45 +00:00
danrubel d761e97178 Remove WithWithoutExtends error code
Change-Id: I1bfe3721200493945580fa1e687ff565a7a79cf0
Reviewed-on: https://dart-review.googlesource.com/73820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-09-07 04:15:28 +00:00
Paul Berry 2fb058e873 Skip non-const expressions when performing one-phase summarization.
The only reason to include non-const expressions in an unlinked
summary is for type inference, but for one-phase summarization, we're
going to perform type inference directly based on the source AST.  So
skip non-const expressions when doing one-phase summarization.

This requires modifying several summary tests so that they no longer
expect the non-const expressions to be present in the unlinked
summary.  It also causes a few tests of one-phase summarization to
start failing, since the AST-based type inference logic hasn't been
implemented yet.  This is ok because one-phase summarization isn't
exposed to customers yet; it will be fixed in follow-up CLs.

Change-Id: I7455fd82b64c59362439206a05a9eb3691c8e397
Reviewed-on: https://dart-review.googlesource.com/73688
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-07 00:54:54 +00:00
Dan Rubel 7905136e64 Allow with clause without extends clause
This removes the code the generates an error when a `with` clause
is used without an `extends` clause as in
```
   class C with M { }
```
This is the first of several CLs to update the parser
as this CL only prevents the error from being generated.

Change-Id: I1d5c8577902e253a4c83cda2f6a1d4ab98319903
Reviewed-on: https://dart-review.googlesource.com/73687
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-09-07 00:25:58 +00:00
Konstantin Shcheglov e13197d192 Update checks for conflicting class members.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34371
Change-Id: Ic056ff4b2f7c7105d12e9b439fcc0cd268cd5ac1
Reviewed-on: https://dart-review.googlesource.com/73301
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-06 22:56:06 +00:00
Konstantin Shcheglov ffc716addf Check that mixin superclass constraints are satisfied.
R=brianwilkerson@google.com

Change-Id: If0957b0868da7c7330bd561b6e91dfb0379fa226
Reviewed-on: https://dart-review.googlesource.com/73720
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-06 21:17:51 +00:00
Paul Berry 6ce37c6541 Convert summarize_ast.dart to triple-slash comment style.
I anticipate heavily modifying this file, and I don't want to have to
mix comment styles when I do so.

Change-Id: Ib93bf5489f080456da81f03f82bd7e850498748c
Reviewed-on: https://dart-review.googlesource.com/73683
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-06 21:09:40 +00:00
Konstantin Shcheglov 230ff965da Report a compile-time error when type arguments after the constructor name with implicit new.
Bug: https://github.com/dart-lang/sdk/issues/34270
Change-Id: I38e919847f25d204c26ec74d04fa49cc46063434
Reviewed-on: https://dart-review.googlesource.com/73600
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-06 19:54:50 +00:00
Paul Berry a5d9eb01c2 Convert link.dart to triple-slash comment style.
I'm going to be adding a lot of new functionality to this file, and I
don't want to have to mix comment styles when I do so.

Change-Id: I35fb7b93b2cfc200995364028ea10bab9c8f1245
Reviewed-on: https://dart-review.googlesource.com/73640
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-06 19:52:26 +00:00
Konstantin Shcheglov 8d9320f777 Test for mixin named 'on'.
Remove explicit _checkForImplementsDeferredClass(), some other mixin checks.

R=brianwilkerson@google.com

Change-Id: I134200d1e78315c19218cf7a9ff4efba7fc50fb8
Reviewed-on: https://dart-review.googlesource.com/73660
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-06 19:47:12 +00:00
Paul Berry e72fd5294a Deprecate unneeded fields from PackageBundle.
Change-Id: I071a44499ef20a32388eea7ba04264c8c9b8e1c9
Reviewed-on: https://dart-review.googlesource.com/73285
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-06 14:16:10 +00:00
Peter von der Ahé d1e2ee28f3 Remove addCompileTimeError in favor of addProblem
Replace most methods with names containing CompileTimeError with corresponding
Problem methods.

Also make Severity.error the default severity.

Change-Id: I4f47bf71dec02347407f2ce4ccfdb04730daf51b
Reviewed-on: https://dart-review.googlesource.com/73221
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2018-09-06 06:56:42 +00:00
Paul Berry a2f4ab5b52 Add an API for generating analyzer summaries in one step.
Currently, analyzer summaries are generated in a two-step process,
translating compilation units into unlinked summaries and then linking
the unlinked summaries together to form linked summaries.  In order to
support full unrestricted type inference, we'll need to build
summaries in one step, so that the full AST of initializers is
available for inference during linking.

This CL introduces a new API for one-step summarizing, along with test
cases to exercise it.  For now, the one-step summary logic just
invokes the old two-step summary process.  In future CLs I'll rework
it to be a true one-step summarizer so that the type inference
restrictions can be lifted.

Change-Id: Ic8d55850972f4697b5c6cc6fabe5d26dc7c1288c
Reviewed-on: https://dart-review.googlesource.com/73300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-06 04:18:46 +00:00
danrubel dc0aae5c44 Improve super initializer recovery
This CL addresses one of the issues in https://github.com/dart-lang/sdk/issues/34041
by fixing an AstBuilder crash and improving recovery of super constructor calls
in a constructor initializer list.

In addition, this adds a TestDescriptor adjustValidUnitBeforeComparison field
to support the new recovery tests.

Change-Id: I9e687aed34ea293700bd45d7c13ce36e83a00a05
Reviewed-on: https://dart-review.googlesource.com/73286
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-09-06 01:16:55 +00:00
Konstantin Shcheglov 169949985a Move CONST_WITH_TYPE_PARAMETERS reporting to ConstantVerifier.
Linter also should be updated to check for this error in HasConstantErrorListener.

R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/33612
Change-Id: If4a2535ffe04d965bbd46b5c92679e6132bf500e
Reviewed-on: https://dart-review.googlesource.com/73283
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-05 20:51:10 +00:00
Paul Berry 370c7b54f5 Further refactoring of summary tests
This CL makes the following changes:

- Makes `linkerInputs` private to the strategy classes (the only thing
  needed by tests is `testDartUri`).

- Changes the return type of addNamedSource to `void` (no caller was
  using the return value).

- Generalizes _FilesToLink so that it can be re-used for one-phase
  summary generation (where the inputs will be CompilationUnit objects
  rather than UnlinkedUnitBuilder objects).

- Moves _parseText to top level so that it can be more easily reused.

Change-Id: I333b278b9a157b5013199d0c21cc4c8d3423dbe7
Reviewed-on: https://dart-review.googlesource.com/73281
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-05 20:31:12 +00:00
Konstantin Shcheglov 732a5e3ea8 Give import prefix type 'dynamic' when it is used as an expression.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34209
Change-Id: I6c393af70342037c496adebefaaf66c7a685852a
Reviewed-on: https://dart-review.googlesource.com/73240
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-05 19:47:00 +00:00
Konstantin Shcheglov e7be010971 Safer FileSystemState.hasUri
SourceFactory.forUri2() can return null.

R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/33859
Bug: https://github.com/dart-lang/sdk/issues/33233
Change-Id: I34908cd9d04050cc2afcdc716c6bb68d4f177702
Reviewed-on: https://dart-review.googlesource.com/73242
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-05 19:46:58 +00:00
Konstantin Shcheglov 239bd1383b Report MEMBER_WITH_CLASS_NAME for static getter/setter with the enclosing class name.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34289
Change-Id: I8b593b4a652547e54ed06c80e34e82c11a14d7e8
Reviewed-on: https://dart-review.googlesource.com/73241
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-05 18:11:00 +00:00
Konstantin Shcheglov b443c9f72f Parse static get/set with name of the enclosing class as getters/setters.
R=brianwilkerson@google.com, danrubel@google.com

Change-Id: I97015fbc3bc49c70a022a2edabf4fcdcc34405ad
Reviewed-on: https://dart-review.googlesource.com/73020
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-05 15:43:48 +00:00
Konstantin Shcheglov 0898620787 Fix constant computing for negative shift left/right and remainder.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/33481
Change-Id: I0cc1b07b222f1fe739df6c720d7357a2453ee1b9
Reviewed-on: https://dart-review.googlesource.com/73040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-05 15:41:58 +00:00
Martin Kustermann dcf1f0a145 Revert "Remove addCompileTimeError in favor of addProblem"
This reverts commit f872c17a85.

Reason for revert: After the CQ was green someone else made changes which this CL is not compatible with. The CQ lands if the tests passed
and doesn't rebase before doing so. 


Original change's description:
> Remove addCompileTimeError in favor of addProblem
> 
> Replace most methods with names containing CompileTimeError with corresponding
> Problem methods.
> 
> Also make Severity.error the default severity.
> 
> Change-Id: I85a340168848cd3b4375b3f53cb0361251ed6e5d
> Reviewed-on: https://dart-review.googlesource.com/73100
> Commit-Queue: Peter von der Ahé <ahe@google.com>
> Reviewed-by: Jens Johansen <jensj@google.com>

TBR=ahe@google.com,jensj@google.com

Change-Id: I3ea736a9752805adb3bacc8b67e8eb1435c1bf69
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/73181
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-09-05 14:13:48 +00:00
Peter von der Ahé f872c17a85 Remove addCompileTimeError in favor of addProblem
Replace most methods with names containing CompileTimeError with corresponding
Problem methods.

Also make Severity.error the default severity.

Change-Id: I85a340168848cd3b4375b3f53cb0361251ed6e5d
Reviewed-on: https://dart-review.googlesource.com/73100
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-09-05 13:47:23 +00:00
Paul Berry 2b995b2654 Drop SummaryBuilder constructor's optional "strong" parameter.
Note that although this change is inside analyzer/lib/src, in practice
it is a breaking change to the analyzer API, since several clients
invoke the SummaryBuilder constructor.  Fortunately we can make
breaking changes now since we have not yet published version 0.33.* of
the analyzer.

To my knowledge, all clients that we care about keeping synchronized
to the bleeding edge version of the analyzer have been modified so
that they no longer pass in the optional parameter.  The remaining
clients shouldn't be affected since their pubspecs still point to
analyzer version 0.32.*.

Change-Id: I627bb7b1242e8e36ec82927ed8fe722b5b249fd6
Reviewed-on: https://dart-review.googlesource.com/73000
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-04 21:57:56 +00:00
Konstantin Shcheglov eedc31e111 Fix for for-in when iterable does not have a type.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/33370
Change-Id: I22ee3c5861ecaa3e6b2bc0f00e7f04191bcd7e78
Reviewed-on: https://dart-review.googlesource.com/72960
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-04 21:19:39 +00:00
Konstantin Shcheglov 48a1504b2f Stop reporting CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER and CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER.
These errors were removed from the spec.
See also https://github.com/dart-lang/sdk/issues/33235

R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34331
Change-Id: Ibc675aa48165300ddac32a8d6ddef4d84d41952a
Reviewed-on: https://dart-review.googlesource.com/72903
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-04 20:29:06 +00:00
Konstantin Shcheglov d65a0ee361 Report more errors for mixin declarations.
I added a fix for parsing static methods in mixins.

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

Change-Id: Ib3c91f6cd5a2eb333f88102609f709fcac1ab9e7
Reviewed-on: https://dart-review.googlesource.com/72901
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-04 19:41:25 +00:00
Konstantin Shcheglov a52b40041b Report MIXIN_DECLARES_CONSTRUCTOR and FINAL_NOT_INITIALIZED for mixins.
I renamed the previous error const to MIXIN_CLASS_DECLARES_CONSTRUCTOR.

R=brianwilkerson@google.com

Change-Id: If06f264e61b7d3e7c254eb457f4b2dc45ef76174
Reviewed-on: https://dart-review.googlesource.com/72860
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-04 17:17:07 +00:00
Aske Simon Christensen 35eacd1afc Type arguments to a constructor is an error.
Fixes https://github.com/dart-lang/sdk/issues/34159

Change-Id: Ib4cca43f4181f2557560fa45ca41dd059c8b5b06
Reviewed-on: https://dart-review.googlesource.com/71521
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2018-09-04 12:06:14 +00:00
Konstantin Shcheglov 7a7ab6410d Resolve using mixin(s) in 'with' clauses.
This also allows searching for mixin(s), which we test now.

R=brianwilkerson@google.com

Change-Id: I6c1944db0e6ecbc0f7352188968e53ef38603426
Reviewed-on: https://dart-review.googlesource.com/72554
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-04 01:02:13 +00:00
danrubel 4cd69887e3 Fix parsing postfix expressions with type parameters
Fix https://github.com/dart-lang/sdk/issues/34315

Change-Id: Id6b1749070473ed5a04a3f024276f9985f82da6e
Reviewed-on: https://dart-review.googlesource.com/72560
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-09-02 18:51:31 +00:00
danrubel 6c197f7bb1 Address comments
address comments in https://dart-review.googlesource.com/c/sdk/+/72123

Change-Id: I0752369d4e41e72dc772cd63cf62625e2e3988ba
Reviewed-on: https://dart-review.googlesource.com/72500
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-09-01 16:16:39 +00:00
Konstantin Shcheglov 7cf078c05d Index and search for mixins.
R=brianwilkerson@google.com

Change-Id: I5399507dc5a9688ee5944f6554167a6b1e8692b6
Reviewed-on: https://dart-review.googlesource.com/72525
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-31 21:38:26 +00:00
Konstantin Shcheglov a4a80a0bf1 Start reporting errors for mixin super-class constraints and implements clauses.
R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I6e6e3edc16737b1d3f665982f7560b46d8b71f01
Reviewed-on: https://dart-review.googlesource.com/72522
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-08-31 20:25:35 +00:00
Konstantin Shcheglov 0fae13e6bf Support for mixins in search.getElementDeclarations.
R=brianwilkerson@google.com

Change-Id: I88e90159ae28a2585fdbaacca2c4caab15891b83
Reviewed-on: https://dart-review.googlesource.com/72523
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-31 20:19:18 +00:00
Konstantin Shcheglov e96652352d Resolve mixin declarations.
Errors for onClause are not correct yet, and not tested yet.

R=brianwilkerson@google.com

Change-Id: I9a1f2b4734661baac85a9d1b9311d21104c7c495
Reviewed-on: https://dart-review.googlesource.com/72360
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-08-31 16:11:21 +00:00
Paul Berry 05ab41c99b Refactor summary tests in preparation for adding a one-phase summary API.
I will soon be adding an API for generating summaries that generates
them in one phase, as opposed to the current two-phase approach of
building unlinked summaries and then linking them together.  This is
will be needed in order to support full type inference of summaries,
since full type inference requires examining the contents of
block-bodied closures, and it's not worth the effort of trying
serialize the contents of block-bodied closures into unlinked
summaries.

To prepare for this, the summary tests need to be generalized so that
during the transition period they will be able to be run with either
API.

This CL introduces several classes in a new `test_strategies.dart` file:

- Interfaces `SummaryBaseTestStrategy`, `SummaryBlackBoxTestStrategy`,
  and `SummaryLinkerTestStrategy`.  These interfaces define the
  methods that can be invoked by tests of the summary mechanism.

- Implementations of those interfaces:
  `SummaryBlackBoxTestStrategyPrelink`,
  `SummaryBlackBoxTestStrategyTwoPhase`, and
  `SummaryLinkerTestStrategyTwoPhase`.  These classes provide the
  ability to drive the summary mechanism in various ways.  When the
  one-phase API is added, more classes will be added to drive it.

- A few private classes occupying intermediate positions in the class
  hierarchy, as well as auxiliary data structures needed by the above
  classes.

The tests themselves have been moved into mixin classes so that they
can be applied to any of the implementations above.

Change-Id: Iac3585944297f78f184d35de544aa4c8d8abe99a
Reviewed-on: https://dart-review.googlesource.com/72320
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-08-31 13:25:08 +00:00
Konstantin Shcheglov 02b2deefd6 Remove StaticWarningCode.isStrongModeError flag.
It is not used internally outside Analyzer itself.

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

Change-Id: Iec2b45ebaeb49400e9f61a137a85170657856016
Reviewed-on: https://dart-review.googlesource.com/72300
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2018-08-31 01:19:24 +00:00
Dan Rubel fa759513ac Add mixin header recovery
Along with the new recovery, there are two new error codes
and their corresponding CFE counterparts:
* ParserErrorCode.IMPLEMENTS_BEFORE_ON
* ParserErrorCode.MULTIPLE_ON_CLAUSES
* ImplementsBeforeOn
* MultipleOnClauses

Change-Id: If9055c9ffa5d56495acf00889236a3a8f6d741ca
Reviewed-on: https://dart-review.googlesource.com/72123
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-08-31 00:25:16 +00:00
Brian Wilkerson ce117b0f92 Revert "Add support in analysis options file for new mixin declaration"
Change-Id: If051da5a77ce697525e11c33d33a1e88e7c42832
Reviewed-on: https://dart-review.googlesource.com/72280
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-08-30 22:11:04 +00:00
Paul Berry 584199eff4 Make the relink() method private.
It's not used by any code except the linker.

Change-Id: Ia2f145279261e42deb9f355898bb429eef0f5413
Reviewed-on: https://dart-review.googlesource.com/72243
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-08-30 22:09:31 +00:00
Konstantin Shcheglov c9d1c4a3b7 Suite of source code based resolution tests.
As opposite to constructing AST nodes and calling partial resolvers.

Also the set of tests that we created for CFE integration is too large,
so I started splitting it into pieces and cleaning up to use findNode,
fincElement, and assertElement/Type().

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

Change-Id: Ide4f0bee9e89eb2daf2317d1d92303a992847f1b
Reviewed-on: https://dart-review.googlesource.com/72240
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-30 21:49:44 +00:00
Konstantin Shcheglov db8b6bc549 Don't report StaticWarningCode.CONFLICTING_DART_IMPORT.
The warning was removed from the language specification.

Plus some optimization for import scope and conflicts.

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

Change-Id: I78b6924f9095dce89324f4093e78c948611f8493
Reviewed-on: https://dart-review.googlesource.com/72064
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-30 20:56:41 +00:00