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

Side by Side Diff: pkg/front_end/lib/src/fasta/source/diet_listener.dart

Issue 2993193002: When reordering constructor initializers, use correct types for temp vars. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.diet_listener; 5 library fasta.diet_listener;
6 6
7 import 'package:kernel/ast.dart' 7 import 'package:kernel/ast.dart'
8 show AsyncMarker, Class, InterfaceType, Typedef; 8 show AsyncMarker, Class, InterfaceType, Typedef;
9 import 'package:kernel/ast.dart'; 9 import 'package:kernel/ast.dart';
10 10
(...skipping 18 matching lines...) Expand all
29 29
30 import '../parser.dart' show MemberKind, Parser, closeBraceTokenFor, optional; 30 import '../parser.dart' show MemberKind, Parser, closeBraceTokenFor, optional;
31 31
32 import '../problems.dart' show internalProblem; 32 import '../problems.dart' show internalProblem;
33 33
34 import '../type_inference/type_inference_engine.dart' show TypeInferenceEngine; 34 import '../type_inference/type_inference_engine.dart' show TypeInferenceEngine;
35 35
36 import '../type_inference/type_inference_listener.dart' 36 import '../type_inference/type_inference_listener.dart'
37 show TypeInferenceListener; 37 show TypeInferenceListener;
38 38
39 import '../type_inference/type_inferrer.dart' show TypeInferrerDisabled;
40
41 import '../util/link.dart' show Link; 39 import '../util/link.dart' show Link;
42 40
43 import 'source_library_builder.dart' show SourceLibraryBuilder; 41 import 'source_library_builder.dart' show SourceLibraryBuilder;
44 42
45 import 'stack_listener.dart' show NullValue, StackListener; 43 import 'stack_listener.dart' show NullValue, StackListener;
46 44
47 class DietListener extends StackListener { 45 class DietListener extends StackListener {
48 final SourceLibraryBuilder library; 46 final SourceLibraryBuilder library;
49 47
50 final ClassHierarchy hierarchy; 48 final ClassHierarchy hierarchy;
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 [Scope formalParameterScope, TypeInferenceListener listener]) { 425 [Scope formalParameterScope, TypeInferenceListener listener]) {
428 listener ??= new TypeInferenceListener(); 426 listener ??= new TypeInferenceListener();
429 InterfaceType thisType; 427 InterfaceType thisType;
430 if (builder.isClassMember) { 428 if (builder.isClassMember) {
431 // Note: we set thisType regardless of whether we are building a static 429 // Note: we set thisType regardless of whether we are building a static
432 // member, since that provides better error recovery. 430 // member, since that provides better error recovery.
433 Class cls = builder.parent.target; 431 Class cls = builder.parent.target;
434 thisType = cls.thisType; 432 thisType = cls.thisType;
435 } 433 }
436 var typeInferrer = library.disableTypeInference 434 var typeInferrer = library.disableTypeInference
437 ? new TypeInferrerDisabled() 435 ? typeInferenceEngine.createDisabledTypeInferrer()
438 : typeInferenceEngine.createLocalTypeInferrer(uri, listener, thisType); 436 : typeInferenceEngine.createLocalTypeInferrer(uri, listener, thisType);
439 return new BodyBuilder(library, builder, memberScope, formalParameterScope, 437 return new BodyBuilder(library, builder, memberScope, formalParameterScope,
440 hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer) 438 hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer)
441 ..constantExpressionRequired = builder.isConstructor && builder.isConst; 439 ..constantExpressionRequired = builder.isConstructor && builder.isConst;
442 } 440 }
443 441
444 void buildFunctionBody( 442 void buildFunctionBody(
445 Token token, ProcedureBuilder builder, MemberKind kind, Token metadata) { 443 Token token, ProcedureBuilder builder, MemberKind kind, Token metadata) {
446 Scope typeParameterScope = builder.computeTypeParameterScope(memberScope); 444 Scope typeParameterScope = builder.computeTypeParameterScope(memberScope);
447 Scope formalParameterScope = 445 Scope formalParameterScope =
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 void addAnnotation(Expression annotation)) { 660 void addAnnotation(Expression annotation)) {
663 if (metadata != null) { 661 if (metadata != null) {
664 var listener = createListener(builder, memberScope, false); 662 var listener = createListener(builder, memberScope, false);
665 var parser = new Parser(listener); 663 var parser = new Parser(listener);
666 parser.parseMetadataStar(metadata); 664 parser.parseMetadataStar(metadata);
667 List<Expression> metadataConstants = listener.finishMetadata(); 665 List<Expression> metadataConstants = listener.finishMetadata();
668 metadataConstants.forEach(addAnnotation); 666 metadataConstants.forEach(addAnnotation);
669 } 667 }
670 } 668 }
671 } 669 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698