Commit Graph

6018 Commits

Author SHA1 Message Date
Dmitry Stefantsov b8cde9347a [cfe] If type variable is its own bound, set it to InvalidType
The motivation for this change is that we can't compute the nullability
for such type parameter types anyways.  Additionally, it stops the
cascading error in case the type variable is its own bound indirectly,
via a chain of other type variables.

Change-Id: I940f19bb47952108ac1e0d1a0ef197b373b6b8e3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114946
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2019-08-30 10:11:40 +00:00
Dmitry Stefantsov d4342b9021 [cfe] Print Kernel's type-parameter types in more details in text
Change-Id: I10cb27cba22ce91eca4e5cceed53a2753c6d4573
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114943
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-30 10:11:40 +00:00
Johnni Winther f10c37b0e5 [cfe] Handle explicit extension instance access.
Including most cases of explicit generic extension instance access.

Change-Id: I43a9d72ef9ddb1dc2cc83f66cb54931b07240d07
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114859
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-08-30 09:12:41 +00:00
Jens Johansen 8e7812fee5 [CFE] Ability to low-level compare dill bytes
Output from a comparison could be something like

Integers differ: 2 vs 3
Map with key 'nullability' has different values (tag 95, likely 'TypeParameterType')
Lists have different values at index 0
Map with key 'items' has different values
Map with key 'typeArguments' has different values (tag 93, likely 'InterfaceType')
Map with key 'returnType' has different values (tag 3, likely 'FunctionNode')
Map with key 'value' has different values (tag 1, likely 'Something<1>')
Map with key 'function' has different values (tag 6, likely 'Procedure')
Lists have different values at index 0
Map with key 'items' has different values
Map with key 'procedures' has different values (tag 2, likely 'Class')
Lists have different values at index 6
Map with key 'items' has different values
Map with key 'classes' has different values
Lists have different values at index 458
Map with key 'libraries' has different values

Which should be read bottom up as something like
Component -> the 458th library -> the 6th class ->
    the 0th procedure -> function -> returnType (a InterfaceType) ->
    0th type argument (a TypeParameterType) ->
    nullability has value 2 in one input and 3 in the other.

Change-Id: I49007a80ddb53a0ba1fae04b22d6efeae3687724
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114602
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-30 07:43:30 +00:00
Jens Johansen 751059b246 [CFE] Explicit creation; add test to force it
Change-Id: I5d5598e8ac84cedc5aa6cbadd088c30c5bc4a22f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114515
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-30 07:41:40 +00:00
danrubel a873bc5db3 fix extension constructor error
This moves another usage of EXTENSION_DECLARES_CONSTRUCTOR into the parser
so that it can be shared by all of CFE.

Change-Id: I3b1502eaf83fdbcc663f4a18d638230e3c5ea925
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114981
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-08-30 00:33:43 +00:00
danrubel 6061906a77 split endMethod into 6 separate events
This updates the parser to detect constructors vs methods
in classes vs mixins vs extensions. Rather than generating a single
endMethod event and require listeners to determine the type of
declaration, the parser now generates different events for
different types of declarations so that listeners can process
each of these different types separately.

In addition, this lays the groundwork for fixing extension declaration
error messages and moving error generation that is duplicated
in the various listeners into the parser.

Change-Id: Ia86a4bf3e6f1442ca4926c754b66e7d6e86fb47d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-30 00:33:43 +00:00
Paul Berry c7f3300448 Flow analysis: begin tracking where variables are written to in closures.
Not yet used.  This will be needed in order to implement the
"writeCaptured" behaviors in the flow analysis spec.

Change-Id: I873f10089a7b93ec5b40d979ddf3a6754e30b181
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114960
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-08-29 17:01:24 +00:00
asiva 45b85e12d2 [VM] - Remove rules to build vm_legacy_platform
Change-Id: If79375d73e24f99017cbeafd3357e03001925162
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114924
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2019-08-29 15:57:54 +00:00
Johnni Winther e3563528e6 [cfe] Add tear off function for extension instance methods.
Change-Id: Ia92640f5dd99cd3eeb5ba737a646472b5f5260a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114844
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-29 09:51:53 +00:00
Johnni Winther 63133a2a8c [cfe] Handle extension instance method tearoff
Change-Id: I56f422ed94fbc328030dce1b01df81954969bb01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114506
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-28 22:16:21 +00:00
Johnni Winther a147d4e8d2 [cfe] Handle simple use of extension instance members
Change-Id: Ic1a949c0dca9327763e01458211e477de13c222f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114504
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-28 22:16:21 +00:00
Dan Rubel e9a44ba6a8 fix extension instance field error
This changes EXTENSION_DECLARES_INSTANCE_FIELD to be a parser error
and moves it into the parser so that it is generated for all of CFE.

See https://github.com/dart-lang/sdk/issues/37945

Change-Id: Ib49d49a20d670e0dd7d9a4cd870237d2cf87dd00
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114882
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-08-28 21:26:31 +00:00
Dan Rubel 15a7b57d8e split endFields into endClass/Mixin/ExtensionFields events
Change-Id: I538d21a595f957ef6080bf3bfe6f0b7299b4bc8d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114881
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-28 21:26:31 +00:00
Johnni Winther 57f7941eef [cfe] Remove 'functionNestingLevel' for VariableDeclaration.forValue
The 'functionNestingLevel' property is only needed for mutation and
for-value variables are final.

Change-Id: I970b8b0d9f185ca6fdf9b0599c792672f853105d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114503
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-08-28 18:50:51 +00:00
Johnni Winther 35382f9b14 [cfe] Always provide a library to the inferrer
This is needed to perform resolution of static extension methods.

Change-Id: Ic3ce046e65a185a4be95151e3d1ec4ad365e35c9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114500
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-08-28 18:50:51 +00:00
Paul Berry e5b139e6d9 Prepare to publish analyzer 0.38.2
Change-Id: I1f86fdc6e49b73bb171795fcf2a13f3cc9712329
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114743
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-08-28 18:18:01 +00:00
Johnni Winther 999007453a [cfe] Use ExpressionInferenceResult as the main result in the inference visitor
This enables the correction of parent pointers for 'lying' parent pointers
(Judgments that contain nodes but who are not their parents). Long term this can
also be used to replace the slow .replaceChild calls with direct updates in the
visitor.

Change-Id: Ibee7efe815937288dea4dc76d524ef44760a7658
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114325
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-08-28 14:26:33 +00:00
Jens Johansen f278451729 [CFE/kernel] Spell check kernel too
Change-Id: I57c91a61a186d9334d7af189427e78bdcb156aa0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114849
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-28 13:02:51 +00:00
Jens Johansen 020663cdbc [CFE] Refactor how we get access to BodyBuilder so we can inject a different one in tests
Change-Id: I6c81fe5a954607e1932affa34d844de10b20cb16
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114510
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-28 10:07:12 +00:00
Jens Johansen 10f8a00e9f [CFE] Update language versioning implementation to conform with specification v1.3
In the feature specification v1.2 libraries in a package with a default
version wasn't allowed to specify a language version higher than that.
In v1.3 thats allowed as long as its below the sdk limit.

Change-Id: I85f5c36a9c9c427da03fc540f9175195134ad47f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114604
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-28 09:30:12 +00:00
Jens Johansen 72ff3495ec [CFE/kernel] Read dill from binary.md description
Change-Id: I99ac3f8f59afbe1f810586c217620b2343843b5b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114601
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-28 08:23:13 +00:00
danrubel 7b37cddbe8 rename ClassKind to DeclarationKind
... and add DeclarationKind.TopLevel

Change-Id: I631c0173a056e856845f02d4415c11336a796e3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114629
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-28 00:57:42 +00:00
danrubel 52e732b786 fix constructor in extension error
This changes EXTENSION_DECLARES_CONSTRUCTOR to be a parser error
and moves it into the parser so that it is generated for all of CFE.

See https://github.com/dart-lang/sdk/issues/37945

Change-Id: Iecaf277c63d7791a4b7ac9e6583b5018821d2c18
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114626
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-28 00:57:42 +00:00
danrubel 0328e8a7b6 sort ForwardingListener and ForwardingTestListener
Change-Id: Ib94c0c57acb8e3e4271e51205511aee4f087f3fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114641
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-08-27 17:54:52 +00:00
danrubel aeb5e732fd split endClass/Mixin/ExtensionFactoryMethod event
This separates an existing parser event into 3 separate events
based upon the enclosing declaration so that listeners
can process them differently in future CLs.

Also address comment in https://dart-review.googlesource.com/c/sdk/+/114564

Change-Id: I07b259d02bd16257edf47eb76cbdd0d022f808dd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114640
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-27 17:54:52 +00:00
Dan Rubel f17d0563fa split class/mixin/extension member parsing
This change makes the parser more aware of what type of member
is being parsed so that proper error messages can be reported
for extension method members in future CLs.

Change-Id: I30002ad1a636b988e59b89d64ba4b0a8ae77c847
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114564
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-08-27 14:52:45 +00:00
Aske Simon Christensen 497765f59f [vm] Move VM constant patching before constant evaluation.
This ensures that the VM host endian optimization described in
http://dartbug.com/32836 works properly after the explicit call to
the constant evaluator in the AOT compiler is removed.

Change-Id: I69424c7d27d113a70700a5cdad345bf632272ab6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112083
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-27 14:07:55 +00:00
Aske Simon Christensen a6596cfd40 [cfe] Allow backend target to specify extra libraries to be indexed.
Change-Id: I35e1857bee3a9cc237da7e8bc70d90a1c83e2b1b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112345
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-27 14:07:55 +00:00
Johnni Winther e7614adedb [cfe] Add Windows work-around for git diff in expectation testing
Change-Id: I126fb328181fc225177486e01a98e83060539b9e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114502
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-08-27 09:56:53 +00:00
Johnni Winther 7dbf8eed3b [cfe] Support sharding in pkg/testing tests
Splits strong_test into 4 shards. This test took 4+ minutes locally with
the fast_strong_test and analyze_test ticking in at ~1:45. This change
makes local testing of frontend unittests take 2 instead of 4 minutes in
total.

Change-Id: Id6015de86d547b209a699b1e5196b3edad1e6977
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114501
Reviewed-by: Jens Johansen <jensj@google.com>
2019-08-27 09:56:53 +00:00
Aske Simon Christensen 21cf0f5f90 [cfe] Clean out all uses of expired flags.
Change-Id: Ib9096f1a8628d78444bc0847b453dd4032864e09
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114073
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-27 09:24:23 +00:00
Johnni Winther a7b470f51f [cfe] Fix use of ExtensionBuilder.target
Change-Id: If15cf9879aac6e11fe788151742866dfb6620e71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114518
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-08-27 08:25:03 +00:00
Jens Johansen fda435a056 [CFE] Add more incremental compiler compiler test
Change-Id: I588cd2c09741e98e712b988f0d872c9e5e148c7a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100845
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-08-27 06:09:56 +00:00
Johnni Winther 6f2c3977cc [cfe] Add available extensions to Scope.
Change-Id: Ibe087e48c2313fc7b830bac75dcdb51da175edea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114324
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-26 20:54:56 +00:00
Paul Berry b8cb25c96f Flow analysis: shift responsibility for handling final fall-through to FlowAnalysis.
Dart allows the last switch case to "fall through" the end of the
switch statement.  To account for this, we previously required the
caller of FlowAnalysis to calling `handleBreak` at the end of the last
switch case.  (In the analyzer implementation we actually only did
this if the last case was a `default` case, but in practice there was
no observable difference).

This CL shifts the responsibility to FlowAnalysis to handle this
scenario; the caller only needs to call `handleBreak` if there is an
actual break statement present.

Change-Id: Ia0d7abb21d78205f1050873e28b30cddc5fbe344
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114547
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-08-26 19:39:00 +00:00
Paul Berry 2011b6fa6b Flow analysis: refactor and unit test switch statement logic.
Responsibility for deciding whether to cancel promotions has been
moved to FlowAnalysis (previously the caller decided).  This should
reduce the risk of the analyzer and front end behaviors diverging.

Also removed an unnecessary argument from
FlowAnalysis.switchStatement_end.

Change-Id: Ib015e4e360e62da7bb267057e4626acaa94e9e74
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114541
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-26 16:11:25 +00:00
Johnni Winther 103a43dd73 [cfe] Towards deprecating Builder.target
- deprecates 'target' on LibraryBuilder, ClassBuilder, ExtensionBuilder,
  TypeAliasBuilder, and TypeVariableBuilder.
- prepares for deprecation of 'target' on MemberBuilder,
  VariableBuilder, and FormalParameterBuilder

Change-Id: Ic04c533eb5443c7b7c6413e48f399450d1ebe43a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113440
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-08-26 12:52:10 +00:00
Paul Berry 30e4092d27 Flow analysis: handle empty for-loop conditions directly in FlowAnalysis.
Previously the client was required to create a synthetic `true`
literal.  The client may still do that (it's equivalent), but it's no
longer necessary.

Change-Id: Iffa12769b542678dab6cd4b5583d7058b41aebd1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114342
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-23 16:19:49 +00:00
Paul Berry 2e4c89aa73 Flow analysis: fix handling of for(;;) loops.
Change-Id: I2bf43c35b80b72fc5a3c3cbe4c8043162809fd1b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114341
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2019-08-23 16:19:49 +00:00
Johnni Winther 00610ec765 [cfe] Return inferred type from inference visitor
Change-Id: I69f7d1283c52e66c17153f4012c712358d64c450
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114200
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-08-23 11:52:38 +00:00
Johnni Winther 16a4ee0eb5 [cfe] Use fileOffset instead of Token in createArguments
This is a step towards decoupling Token from Forest. We should be able to
create nodes without tokens an still provide offsets.

Change-Id: Ifd2499435a12d0b54db1cc374d71cbc51d187f98
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114071
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-23 11:52:38 +00:00
Johnni Winther 8c9d6c1c68 [cfe] Use ObjectAccessTarget as the result for object access resolution
Change-Id: Id6c9fcccf2424e6b6596c0c6937de802176fe818
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113996
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-08-23 11:52:38 +00:00
Paul Berry 5fb29b6a8d Flow analysis: allow sets of referenced variables to be any iterable.
Change-Id: I999d06deaf5764ea422cf5bbbb4b9c1cb1cddcfe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114080
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-23 11:07:58 +00:00
Paul Berry 1f9dd21940 Flow analysis: create the VariableModel data structure.
In the long term we want to track a lot of information about each
variable; currently we are only tracking the promoted type.

Change-Id: Ibdf90e0db524b4b87eb23921529ff2a65a927f9f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113748
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-23 11:07:58 +00:00
Jens Johansen 9c707d7639 [CFE] Add lint that checks fastas own dependencies
Change-Id: I439fce7065e277b8aba2bae05b60e73c470b3fd0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114075
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-23 07:42:53 +00:00
Jens Johansen 74e09abc6e [CFE] Remove/move file that wasn't needed by frontend; cleanup pubspec.yaml a bit
Change-Id: I204b844e7f1cb892a529bca3a13017ed836275f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114074
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-23 07:42:03 +00:00
Jens Johansen bd681ea660 [CFE] Move testing out of lib/src/fasta
Change-Id: I477892fa9268ab3715152c0253dd65a1c1541c1e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114072
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-23 06:20:03 +00:00
Alexander Markov 5e428ed638 [vm/bytecode] Fixes for expression evaluation
* Set parent for TypeParameters created in createExpressionEvaluationComponent.

* Resolve references from bytecode to an expression evaluation class
  using real class. Expression evaluation class could be referenced
  from type parameters.

* Avoid registering expression evaluation classes in hierarchy. They
  shouldn't be discovered through direct subclasses or implementors,
  as expression evaluation classes don't have cids.

* Add :function_type_arguments_var local variable to bytecode local
  variables info, so expression evaluation can find function type
  arguments which are in scope.

Change-Id: I515431a989b4d02af4ecf90579931dd59d3acadd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114182
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-08-22 22:53:12 +00:00
Jens Johansen e4c552fb48 [CFE] Add test that runs analyzer on CFE source with lints
We already have an analyzer test in CFE, but because that test also
includes for instance everything that imports the front_end, kernel or
testing, we had to disable lints in that one.
This CL adds an analyzer test for CFE sorces onlyi where lints are
enabled.

Change-Id: Ic58c8c6e92f4a7962bbf5489a37f2bf95a5c095b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114067
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-08-22 10:52:59 +00:00