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

Issue 1352763004: Add additional strong mode inference. (Closed)

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

Description

Add additional strong mode inference. This adds in all the remaining inference cases from the strong mode RestrictedStaticTypeAnalyzer. BUG= R=brianwilkerson@google.com Committed: https://github.com/dart-lang/sdk/commit/4fe661995d664aa388400d92ee81703f99d13a68

Patch Set 1 #

Patch Set 2 : Add tests #

Total comments: 9

Patch Set 3 : Address comments 1 #

Patch Set 4 : Address comments 2 #

Total comments: 2

Patch Set 5 : Fix inline JS #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+409 lines, -27 lines) Patch
M pkg/analyzer/lib/src/generated/static_type_analyzer.dart View 1 2 3 4 11 chunks +225 lines, -6 lines 4 comments Download
M pkg/analyzer/test/generated/resolver_test.dart View 1 8 chunks +184 lines, -21 lines 0 comments Download

Messages

Total messages: 19 (4 generated)
Leaf
This has all of the remaining inference except the downwards inference. Some of this is ...
5 years, 3 months ago (2015-09-22 18:02:16 UTC) #2
Jennifer Messerly
Nice! just one comment I noticed while skimming this https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode15136 pkg/analyzer/lib/src/generated/resolver.dart:15136: ...
5 years, 3 months ago (2015-09-22 18:17:21 UTC) #4
Paul Berry
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode15133 pkg/analyzer/lib/src/generated/resolver.dart:15133: // TODO(vsm): The static type of a conditional should ...
5 years, 3 months ago (2015-09-22 18:23:13 UTC) #5
Brian Wilkerson
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode13444 pkg/analyzer/lib/src/generated/resolver.dart:13444: Map<String, DartType> get objectMemberTypes; I'm not thrilled with this ...
5 years, 3 months ago (2015-09-22 18:36:53 UTC) #6
Leaf
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode15133 pkg/analyzer/lib/src/generated/resolver.dart:15133: // TODO(vsm): The static type of a conditional should ...
5 years, 3 months ago (2015-09-22 18:37:28 UTC) #7
Jennifer Messerly
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode13444 pkg/analyzer/lib/src/generated/resolver.dart:13444: Map<String, DartType> get objectMemberTypes; On 2015/09/22 18:36:53, Brian Wilkerson ...
5 years, 3 months ago (2015-09-22 18:45:52 UTC) #8
Leaf
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode13444 pkg/analyzer/lib/src/generated/resolver.dart:13444: Map<String, DartType> get objectMemberTypes; On 2015/09/22 18:45:52, John Messerly ...
5 years, 3 months ago (2015-09-22 19:55:22 UTC) #9
Brian Wilkerson
https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart File pkg/analyzer/lib/src/generated/resolver.dart (right): https://codereview.chromium.org/1352763004/diff/20001/pkg/analyzer/lib/src/generated/resolver.dart#newcode13444 pkg/analyzer/lib/src/generated/resolver.dart:13444: Map<String, DartType> get objectMemberTypes; Another option would be to ...
5 years, 3 months ago (2015-09-22 20:01:32 UTC) #10
Leaf
Ok, objectMemberTypes eliminated, PTAL.
5 years, 3 months ago (2015-09-22 20:14:59 UTC) #11
vsm
https://codereview.chromium.org/1352763004/diff/60001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart File pkg/analyzer/lib/src/generated/static_type_analyzer.dart (right): https://codereview.chromium.org/1352763004/diff/60001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart#newcode1746 pkg/analyzer/lib/src/generated/static_type_analyzer.dart:1746: _recordPropagatedType(node, returnType); I think this needs to be _recordStaticType ...
5 years, 3 months ago (2015-09-22 20:29:02 UTC) #13
Leaf
https://codereview.chromium.org/1352763004/diff/60001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart File pkg/analyzer/lib/src/generated/static_type_analyzer.dart (right): https://codereview.chromium.org/1352763004/diff/60001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart#newcode1746 pkg/analyzer/lib/src/generated/static_type_analyzer.dart:1746: _recordPropagatedType(node, returnType); On 2015/09/22 20:29:02, vsm wrote: > I ...
5 years, 3 months ago (2015-09-22 20:35:48 UTC) #14
Brian Wilkerson
LGTM
5 years, 3 months ago (2015-09-22 20:38:13 UTC) #15
Leaf
Committed patchset #5 (id:80001) manually as 4fe661995d664aa388400d92ee81703f99d13a68 (presubmit successful).
5 years, 3 months ago (2015-09-22 21:03:14 UTC) #16
scheglov
https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart File pkg/analyzer/lib/src/generated/static_type_analyzer.dart (right): https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart#newcode1875 pkg/analyzer/lib/src/generated/static_type_analyzer.dart:1875: * an ad-hoc list of pseudo-generic methids. "methods" https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/generated/static_type_analyzer.dart#newcode1901 ...
5 years, 3 months ago (2015-09-22 21:21:32 UTC) #18
Leaf
5 years, 3 months ago (2015-09-22 21:29:24 UTC) #19
Message was sent while issue was closed.
https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/ge...
File pkg/analyzer/lib/src/generated/static_type_analyzer.dart (right):

https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/ge...
pkg/analyzer/lib/src/generated/static_type_analyzer.dart:1875: * an ad-hoc list
of pseudo-generic methids.
On 2015/09/22 21:21:32, scheglov wrote:
> "methods"

Done.

https://codereview.chromium.org/1352763004/diff/80001/pkg/analyzer/lib/src/ge...
pkg/analyzer/lib/src/generated/static_type_analyzer.dart:1901: tx ==
_typeProvider.doubleType) {
On 2015/09/22 21:21:32, scheglov wrote:
> Maybe "tx == ty && (tx == _typeProvider.intType || tx ==
> _typeProvider.doubleType)" instead?
> 
> There is a test "max(1, 2.0) => num".
> But it seems that "max(1.0, 2)" will give "double".

Great catch, thanks!  Will fix in followup.

Powered by Google App Engine
This is Rietveld 408576698