Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Issue 1568643002: clean up generic methods in resolution (Closed)

Created:
4 years, 11 months ago by Jennifer Messerly
Modified:
4 years, 11 months ago
Reviewers:
Leaf, Brian Wilkerson
CC:
reviews_dartlang.org
Base URL:
git@github.com:dart-lang/sdk.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

clean up generic methods in resolution Introduces MethodInvocation.staticInvokeType to track the type of this invocation. This provides a natural place to store the instantiated generic function type. We then use this type when we are computing corresponding parameters or return types. As a result we do not need FunctionMember, and some of the code around generics becomes simpler/more uniform. This approach should be a straightforward way to add support for generics in FunctionExpressionInvocation, in a follow up (see issue #25175). Also renames "boundTypeParameters" to "typeFormals". "formals" and "actuals" is a pretty common way to describe these, I'm not sure why I didn't think of that better name originally. :) Also removes broken ParameterMember.== that I had added in a previous CL. And the broken FunctionTypeImpl.originalFunction/instantiatedTypeArguments getters. Finally, this fixes #23252 in the process of adding this. The return type of a "call" method was not being statically analyzed if the target was a VariableElement. R=brianwilkerson@google.com, leafp@google.com Committed: https://github.com/dart-lang/sdk/commit/924f2f97b75bc9774fe49813806e574d1ddbccb1

Patch Set 1 #

Patch Set 2 : deprecate FunctionMember #

Total comments: 20

Patch Set 3 : #

Patch Set 4 : #

Total comments: 3

Patch Set 5 : #

Patch Set 6 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+420 lines, -426 lines) Patch
M pkg/analyzer/lib/dart/element/type.dart View 1 2 3 chunks +20 lines, -4 lines 0 comments Download
M pkg/analyzer/lib/src/dart/element/member.dart View 1 2 chunks +6 lines, -6 lines 0 comments Download
M pkg/analyzer/lib/src/dart/element/type.dart View 1 2 3 12 chunks +21 lines, -51 lines 0 comments Download
M pkg/analyzer/lib/src/generated/ast.dart View 1 chunk +15 lines, -0 lines 0 comments Download
M pkg/analyzer/lib/src/generated/element_resolver.dart View 1 2 3 4 5 5 chunks +81 lines, -158 lines 0 comments Download
M pkg/analyzer/lib/src/generated/error_verifier.dart View 1 chunk +4 lines, -4 lines 0 comments Download
M pkg/analyzer/lib/src/generated/resolver.dart View 1 2 3 4 chunks +105 lines, -10 lines 0 comments Download
M pkg/analyzer/lib/src/generated/static_type_analyzer.dart View 5 chunks +49 lines, -82 lines 0 comments Download
M pkg/analyzer/lib/src/generated/type_system.dart View 6 chunks +9 lines, -9 lines 0 comments Download
M pkg/analyzer/lib/src/task/strong/checker.dart View 1 chunk +8 lines, -2 lines 0 comments Download
M pkg/analyzer/test/generated/resolver_test.dart View 1 2 3 14 chunks +100 lines, -96 lines 0 comments Download
M pkg/analyzer/test/src/task/strong/checker_test.dart View 3 4 5 1 chunk +2 lines, -4 lines 0 comments Download

Messages

Total messages: 19 (8 generated)
Jennifer Messerly
Hi Brian & Leaf, I think (well, hope :D) that you'll like this CL! It ...
4 years, 11 months ago (2016-01-06 20:49:18 UTC) #7
Jennifer Messerly
Hah, I totally forgot to mention, Leaf -- this gets rid of the broken "originalFunction" ...
4 years, 11 months ago (2016-01-06 20:52:00 UTC) #8
Brian Wilkerson
LGTM https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/dart/element/type.dart File pkg/analyzer/lib/dart/element/type.dart (right): https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/dart/element/type.dart#newcode604 pkg/analyzer/lib/dart/element/type.dart:604: * will track the substitution `{S/T}`. This substitution ...
4 years, 11 months ago (2016-01-06 21:57:34 UTC) #10
Jennifer Messerly
Thanks Brian! I think I got all of your comments if you want to take ...
4 years, 11 months ago (2016-01-06 22:25:52 UTC) #11
Brian Wilkerson
https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart File pkg/analyzer/lib/src/generated/element_resolver.dart (right): https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart#newcode645 pkg/analyzer/lib/src/generated/element_resolver.dart:645: DartType propagatedInvokeType = > I think we get this ...
4 years, 11 months ago (2016-01-06 22:47:01 UTC) #12
Jennifer Messerly
https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart File pkg/analyzer/lib/src/generated/element_resolver.dart (right): https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart#newcode645 pkg/analyzer/lib/src/generated/element_resolver.dart:645: DartType propagatedInvokeType = On 2016/01/06 22:47:01, Brian Wilkerson wrote: ...
4 years, 11 months ago (2016-01-06 22:52:48 UTC) #13
Jennifer Messerly
I added some logic to avoid setting the propagatedInvokeType. Turns out we still need to ...
4 years, 11 months ago (2016-01-07 00:11:18 UTC) #14
Brian Wilkerson
LGTM https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart File pkg/analyzer/lib/src/generated/element_resolver.dart (right): https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart#newcode645 pkg/analyzer/lib/src/generated/element_resolver.dart:645: DartType propagatedInvokeType = See ResolverVisitor.recordPropagatedTypeIfBetter.
4 years, 11 months ago (2016-01-07 00:24:23 UTC) #15
Jennifer Messerly
Thanks! https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart File pkg/analyzer/lib/src/generated/element_resolver.dart (right): https://codereview.chromium.org/1568643002/diff/20001/pkg/analyzer/lib/src/generated/element_resolver.dart#newcode645 pkg/analyzer/lib/src/generated/element_resolver.dart:645: DartType propagatedInvokeType = On 2016/01/07 00:24:22, Brian Wilkerson ...
4 years, 11 months ago (2016-01-07 00:33:29 UTC) #16
Leaf
LGTM! This is really nice, I think a big improvement. I think this just leaves ...
4 years, 11 months ago (2016-01-07 22:47:30 UTC) #17
Jennifer Messerly
4 years, 11 months ago (2016-01-07 22:51:41 UTC) #19
Message was sent while issue was closed.
Committed patchset #6 (id:100001) manually as
924f2f97b75bc9774fe49813806e574d1ddbccb1 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698