Commit Graph

7628 Commits

Author SHA1 Message Date
Konstantin Shcheglov 320c6150e8 Check overrides only against names directly defined in superinterfaces.
R=brianwilkerson@google.com

Change-Id: Id354887ff9f6bc0fcbc338839cb5f52fefd3c9b7
Reviewed-on: https://dart-review.googlesource.com/c/81221
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-23 16:43:21 +00:00
Konstantin Shcheglov f5758b74c8 Report missing '[]' and '[]=' operators separately.
R=brianwilkerson@google.com

Change-Id: I729d76c3373ab0eba3e191a5a79f6d2a34a97e23
Reviewed-on: https://dart-review.googlesource.com/c/81222
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-23 15:46:51 +00:00
Konstantin Shcheglov b3f91d3554 Remove duplicate reporing of TYPE_PARAMETER_REFERENCED_BY_STATIC.
R=brianwilkerson@google.com

Change-Id: Ibbb711194924010a2d216c56f72e24b16ee11903
Reviewed-on: https://dart-review.googlesource.com/c/81220
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-23 15:43:31 +00:00
Paul Berry 5954a3e5d0 Merge commit '6443a8036d3914f28f1d1e140a108487953cd909' into analyzer 2018-10-23 06:03:57 -07:00
Konstantin Shcheglov 2f90f8d0ef Issue 34896. Verify the superconstraint signature invoked by a mixin, not the mixin's one.
R=brianwilkerson@google.com, paulberry@google.com

Fixes: https://github.com/dart-lang/sdk/issues/34896
Change-Id: I778d572e2e2d0affb15c28d7bf2c1fbb58a8cd8a
Reviewed-on: https://dart-review.googlesource.com/c/81204
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2018-10-23 06:20:59 +00:00
Konstantin Shcheglov 0803b538a8 Revert a change that causes failures internally.
This reverts a part of https://dart-review.googlesource.com/c/sdk/+/81160

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

Change-Id: I2ed4741191c8d0fdea135fa550b58beb0bd3bcc1
Reviewed-on: https://dart-review.googlesource.com/c/81202
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-23 04:54:37 +00:00
Paul Berry 9ca0d26744 Properly type infer references to class type parameters.
Fixes #34489.

Change-Id: I7dca72366dd9259e6a0f39aaa07202943eb9f54d
Reviewed-on: https://dart-review.googlesource.com/c/81180
Commit-Queue: Paul Berry <paulberry@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-10-23 04:24:53 +00:00
Brian Wilkerson 017e6b184b Add a utility to LibraryElement to access top-level elements without enumerating all of the compilation units (issue 34892)
Change-Id: If5bdc5da20bc0fb524c5f2db47ff46a87d511194
Reviewed-on: https://dart-review.googlesource.com/c/81185
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-22 22:25:57 +00:00
Konstantin Shcheglov ca3c0ea097 MethodDeclaration element is always directly enclosed by ClassElement.
So, there is no need to use getAncestor() and create a closure.

R=brianwilkerson@google.com

Change-Id: I2b0e751160edea145e629439f377995a7bb5946d
Reviewed-on: https://dart-review.googlesource.com/c/81184
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 22:23:37 +00:00
Konstantin Shcheglov 1ef371e133 Replace RecordingErrorListener with BooleanErrorListener ins constructor invocation evaluation.
R=brianwilkerson@google.com

Change-Id: I3f716725e9ff46c0d8841a07f63d146df95ca298
Reviewed-on: https://dart-review.googlesource.com/c/81183
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 21:49:26 +00:00
Konstantin Shcheglov e648d63bed Revert "Compute unlinked API signatures without unlinked summaries."
This reverts commit eb9687189d.

Exceptions like "Element not found in summary" still happen with
2.1.0-dev.7.1 internally, and I suspect that it is caused by
discrepancies in API signatures and unlinked units. So, I think we
should revert this change.  We are not going to do one-phase link
anymore, so this CL is not strongly required anymore.

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

Change-Id: I213156942fa3257b1884b209dda0b1d0c731d9a8
Reviewed-on: https://dart-review.googlesource.com/c/81181
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 21:29:11 +00:00
Konstantin Shcheglov 324bb8a137 Create less maps and lists in evaluateConstructorCall().
R=brianwilkerson@google.com

Change-Id: I5044cd2917ac4358386e1d7c1d86d5c88e0b15c2
Reviewed-on: https://dart-review.googlesource.com/c/81160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 20:28:03 +00:00
Paul Berry 5665636983 Merge commit '7fd78ed5b606e64d30ec201de9adce6fdf8856ba' into analyzer 2018-10-22 13:07:24 -07:00
Konstantin Shcheglov 4e6fa7f41b Simplify RecordingErrorListener, and create errors list lazily.
The method addAll() is not really used.

We also use getErrorsForSource() only once in Analyzer / Server, and
only in tasks. So, we don't need Map<Source, errors>, and can use just
a single set of errors, which is cheaper than Map.

R=brianwilkerson@google.com

Change-Id: I001b0ce33ea496dd98191408245e3e82a47ff605
Reviewed-on: https://dart-review.googlesource.com/c/81140
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-22 19:38:45 +00:00
Konstantin Shcheglov 6d81edec7b Remember super-interfaces as Interface objects in _ClassVerifier.
R=brianwilkerson@google.com

Change-Id: I0bd2cf89f64d894334501b68ba9fc5707e34bf74
Reviewed-on: https://dart-review.googlesource.com/c/81120
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 18:33:37 +00:00
Brian Wilkerson 67b9f2ec8d Deprecate Element.unit and Element.computeNode
Change-Id: Id2a70b4a194cba28bfdc0990d7306d6561f422db
Reviewed-on: https://dart-review.googlesource.com/c/81060
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-22 16:50:43 +00:00
Brian Wilkerson a342cecffd Disable support for the old super mixins
Change-Id: I8f8074b67ea43249fcc10deddd2325938996d529
Reviewed-on: https://dart-review.googlesource.com/c/79469
Reviewed-by: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-22 16:02:01 +00:00
Konstantin Shcheglov c44fa48f8f Extract and rewrite MethodInvocation resolution.
This is a copy of https://dart-review.googlesource.com/c/sdk/+/78182,
but now in the analyzer branch.

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

Change-Id: I75d17a351ee7a33c164d560009cf3ffd088d956a
Reviewed-on: https://dart-review.googlesource.com/c/80942
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-22 03:36:30 +00:00
Konstantin Shcheglov 108101149e Use single InheritanceManager2 instance for LibraryContext.
R=brianwilkerson@google.com

Change-Id: I80fe13bd19b6c1677c66a1535550852eb093c6b3
Reviewed-on: https://dart-review.googlesource.com/c/80987
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-22 02:40:46 +00:00
Konstantin Shcheglov 7c80d22878 Make indexing in AnalysisDriver optional.
This makes my Flutter benchmark about 6% faster.

It will not affect performance of `flutter analyze`, because for now
Analysis Server always enables indexing and search. But we could make
this optional, for DAS clients that need only errors, but not search,
refactorings, etc.

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

Change-Id: I4eafc37592a3bb18bd2c6ab84dc2515a4d42697b
Reviewed-on: https://dart-review.googlesource.com/c/80880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-21 20:20:05 +00:00
Konstantin Shcheglov 163b356b79 Remove CheckedModeCompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION.
There is no destinction anymore.
So, we don't need a cycle, and can report just one error kind.

R=brianwilkerson@google.com

Change-Id: I54680ca5b5df275b2d68804a0ad7caeda3ed92aa
Reviewed-on: https://dart-review.googlesource.com/c/80982
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-21 19:49:44 +00:00
Brian Wilkerson 4e36069271 Add fixes for missing implementation of a superclass constraint
Change-Id: I5ea1e961dbb98c034131c15d1945f21bcfa0df1d
Reviewed-on: https://dart-review.googlesource.com/c/80980
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-21 15:03:16 +00:00
danrubel f5cd6ccfb7 More shared fasta/analyzer error codes
Change-Id: I1b80ce7f8b17e0bb1e974d4effcf8d64a250dda1
Reviewed-on: https://dart-review.googlesource.com/c/80944
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-10-20 03:10:25 +00:00
Brian Wilkerson aed6e8419f Add recovery tests related to enum and mixin declarations
Change-Id: I051f9a344fce3bd8d7c2f87b927d351c4596de1a
Reviewed-on: https://dart-review.googlesource.com/c/80941
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-19 22:08:25 +00:00
Brian Wilkerson cecda9043b Update analyzer docs based on previous feedback
Change-Id: I165ac4b816f5dc2c244e53387436dd2409774557
Reviewed-on: https://dart-review.googlesource.com/c/80940
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-19 21:09:33 +00:00
danrubel 9f7ad8d082 Fix recovery when parsing complex type variables
This fixes parser recovery when the user has inserted a word before
a method declaration with a complex type arguments, such as

  foo Future<List<int>> bar() {}

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

Change-Id: Ic6d1767668bd34d75c6ab5f9973e5762bdd8f160
Reviewed-on: https://dart-review.googlesource.com/c/80780
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-10-19 18:56:09 +00:00
Paul Berry fe5467092a Merge commit '7a3762d4a91aed0b3885259b297953d0c38ce849' into analyzer 2018-10-19 10:00:38 -07:00
Brian Wilkerson 531d8235eb Initial documentation for the public API
Change-Id: Id859cf8ff40cd8c0ebce88874f11ca69c2697c59
Reviewed-on: https://dart-review.googlesource.com/c/79479
Reviewed-by: Danny Tuppeny <dantup@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-18 22:08:43 +00:00
Konstantin Shcheglov 5f4511a30e Stop adding tokens to unit API signature at EOF.
R=brianwilkerson@google.com, danrubel@google.com

Fixes https://github.com/dart-lang/sdk/issues/34850
Change-Id: Iaa4a537ee7f69446129663467241cc8a8498d57b
Reviewed-on: https://dart-review.googlesource.com/c/80680
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-18 18:03:05 +00:00
Konstantin Shcheglov e0e6cf37eb Reuse library elements across multiple resolutions.
This makes my Flutter benchmark about 25% faster.

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

Change-Id: I9db776ec97afb60b452725175dbe0d0331522bd3
Reviewed-on: https://dart-review.googlesource.com/c/80508
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-18 16:03:28 +00:00
Sam Rawlins 2bb4284c63 Add a few more tests and comments for GnWorkspace
Change-Id: I3d8cc76e166c1968049c35d383599f6bebd0d1bf
Reviewed-on: https://dart-review.googlesource.com/c/80521
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-10-18 00:26:01 +00:00
Konstantin Shcheglov ffecd71763 Revert "Don't clone constant ASTs when running with Analysis Driver."
This reverts commit 77c5677abe.

This is a copy of https://dart-review.googlesource.com/c/sdk/+/80504
but for the analyzer branch.

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

Change-Id: I0b154354d8e47fb4393ab8a90d897b42d5a1db05
Reviewed-on: https://dart-review.googlesource.com/c/80506
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-17 21:17:27 +00:00
Konstantin Shcheglov cc750ecec1 Revert "Don't clone constant ASTs when running with Analysis Driver."
This reverts commit 77c5677abe.

This change contradicts to another performance work I'm doing in the
analyzer branch, and I'd like to revert it in both branches.

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

Change-Id: I7136f17ef92da25418bbcc3079077b968129f956
Reviewed-on: https://dart-review.googlesource.com/c/80504
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-17 20:38:06 +00:00
Paul Berry 9233c1e40e Merge commit '4506e1d179d4494e21be05a2940295b1673b579c' into analyzer
Conflicts:
	pkg/analyzer/lib/src/dart/analysis/driver.dart
2018-10-17 12:08:17 -07:00
Konstantin Shcheglov 24ec9ccb4b SDK bundle was superseded by SummaryDataStore externalSummaries.
R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I233bcf15c3c6a0fd9cde76fa3104ada186a4fe6d
Reviewed-on: https://dart-review.googlesource.com/c/80501
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-17 18:08:21 +00:00
Brian Wilkerson 9a69a5c1ee Remove more unnecessary awaits (from analyzer)
Change-Id: I796c8344db1d8bf225ef347cd09e419bb86b3a5f
Reviewed-on: https://dart-review.googlesource.com/c/80400
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-17 00:29:01 +00:00
Konstantin Shcheglov e25367674f Add non-API for providing FileContentOverlay to ContextBuilderImpl.
It does not change anything user-visible, but I'd like to provide it
from my benchmark script to concentrate mostly on analysis, without
reading files.

R=brianwilkerson@google.com

Change-Id: Ib5cbb4d0fd30075ddc3f6f5f9afdf23fc07f112d
Reviewed-on: https://dart-review.googlesource.com/c/80363
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-17 00:22:29 +00:00
Sam Rawlins 5b574415f8 Fix GnWorkspace root
Bug: none
Change-Id: I61c11773313bab13afcab26bd2d3164a94da3e46
Reviewed-on: https://dart-review.googlesource.com/c/80260
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2018-10-16 23:09:01 +00:00
Konstantin Shcheglov 1f4461874b Rewrite often used parts of ClassElementImpl without iterators and closures.
R=brianwilkerson@google.com

Change-Id: Ib659663b164f4f937cf185e3c2eb0828e00a3500
Reviewed-on: https://dart-review.googlesource.com/c/80360
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-16 20:46:59 +00:00
Konstantin Shcheglov 1743b70fe0 Make analysis synchronous again.
This reverts https://codereview.chromium.org/3010463002

We don't talk to CFE anymore, so we can do all analysis synchronously.

R=brianwilkerson@google.com

Change-Id: Ifb960230bdde66862f53cd820ffd31a738df11ee
Reviewed-on: https://dart-review.googlesource.com/c/80080
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-16 18:46:18 +00:00
Konstantin Shcheglov 20f4349951 Fix for reporting INVALID_USE_OF_PROTECTED_MEMBER in documentation comments.
R=brianwilkerson@google.com, devoncarew@google.com

Bug: https://github.com/dart-lang/sdk/issues/34816
Change-Id: Ifb46351f83405e862fb5f28b669fa151ab0e2f8f
Reviewed-on: https://dart-review.googlesource.com/c/80267
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
2018-10-16 17:29:37 +00:00
Paul Berry aab2f13acc Merge commit '5d78509e25c1f57bba2f596ced99c7b3ede4494c' into analyzer 2018-10-16 10:27:30 -07:00
Brian Wilkerson df621a1fff Fix cast exception in TypeNameResolver (issue-34809)
Change-Id: I4e0e3bb1c87dd55ab8586b22a294efe3a368ded2
Reviewed-on: https://dart-review.googlesource.com/c/80264
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-16 16:39:53 +00:00
Konstantin Shcheglov 9e4e1e70f3 We use transitiveSignature.linked often, it is beneficial to cache it.
This helps us save about 300 ms (about 1.5%), and some GC cycles.

R=brianwilkerson@google.com

Change-Id: Ic5842cfcfed515727a30d925363d106776d9b7ed
Reviewed-on: https://dart-review.googlesource.com/c/80081
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-16 16:22:18 +00:00
Brian Wilkerson 5d78509e25 Make FieldElementImpl.isCovariant a public member on FieldElement
Change-Id: I5004f9a18c842a51fcb8901ece8bb7831d237a33
Reviewed-on: https://dart-review.googlesource.com/c/80261
Auto-Submit: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-10-16 15:58:46 +00:00
Konstantin Shcheglov 91ead7d34e Build libraries graph and compute transitive signatures for library cycles.
Instead of computive transitive sets of files for each library, we
now build LibraryCycle instances and shared them among the libraries
of the cycle. To compute transitive signatures, we don't append each
invidual API signature of a transitive file, but compute API signatures
of the files in the cycle with transitive signatures of directly
referenced library cycles.

This reduces time to compute transitive signatures from 1200 ms to
about 80 ms, and makes my Flutter benchmark about 6% faster.

R=brianwilkerson@google.com

Change-Id: I0ba6d9da48abb585c2a9675e3ca8ebac3ef20612
Reviewed-on: https://dart-review.googlesource.com/c/80042
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-16 01:06:07 +00:00
Paul Berry ae22eaa48b Remove unused import
Change-Id: I63351adc0b7e456c4e190abb125382f70ec75b8b
Reviewed-on: https://dart-review.googlesource.com/c/79823
Commit-Queue: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-15 16:48:47 +00:00
Konstantin Shcheglov 77c5677abe Don't clone constant ASTs when running with Analysis Driver.
This makes my Flutter benchmark another 4-5% faster.

Currently resolved ASTs and element models for them live and die
together. It is possible to misuse API, and keep element model extracted
from a resolved AST, so that this element model will continue keeping
the whole AST in memory. But there is also a way to get just element
model, without AST, so there is a way for the user to get it right.

Hm... It seems that either the element models we get are not complete
(and don't have ASTs for initializers, default values, etc). Or we don't
actually need to copy ASTs into element model, and the only reason
why we are doing this is that there is something in task model that
forced us to do this. We need to analyze why we do what we do while we
are removing task model.

R=brianwilkerson@google.com

Change-Id: I058c81cb99fe84c68e96e6bc722a27d87c499155
Reviewed-on: https://dart-review.googlesource.com/c/79641
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-10-14 22:35:18 +00:00
Brian Wilkerson 180b3dd301 Remove extra spaces in copyright notices in analyzer_plugin
Change-Id: Icf01fbdd84747fc92908fe5ca818124c5df992af
Reviewed-on: https://dart-review.googlesource.com/c/79640
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-10-13 18:05:23 +00:00
Konstantin Shcheglov d127ab9a27 Get rid of places that allocate lots of _Closure instances.
One huge source of them was checking for @visibleForTesting, @protected,
etc. I extracted it into _InvalidAccessVerifier and refactored for
performance and clarity. We probably get 3-4% speed up on my Flutter
benchmark.

R=brianwilkerson@google.com

Change-Id: I6d0dce9a10c41595bc2245d45dafad7ae2f8b837
Reviewed-on: https://dart-review.googlesource.com/c/79478
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-10-13 17:34:04 +00:00