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

Side by Side Diff: pkg/compiler/lib/src/resolution/resolution_common.dart

Issue 1383483006: Extract DiagnosticReporter implementation from Compiler. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fixes after rebase. Created 5 years, 2 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 dart2js.resolution.common; 5 library dart2js.resolution.common;
6 6
7 import '../common/resolution.dart' show 7 import '../common/resolution.dart' show
8 Resolution; 8 Resolution;
9 import '../common/tasks.dart' show 9 import '../common/tasks.dart' show
10 DeferredAction; 10 DeferredAction;
11 import '../compiler.dart' show 11 import '../compiler.dart' show
12 Compiler; 12 Compiler;
13 import '../diagnostics/diagnostic_listener.dart' show 13 import '../diagnostics/diagnostic_listener.dart' show
14 DiagnosticMessage; 14 DiagnosticMessage,
15 DiagnosticReporter;
15 import '../diagnostics/messages.dart' show 16 import '../diagnostics/messages.dart' show
16 MessageKind; 17 MessageKind;
17 import '../diagnostics/spannable.dart' show 18 import '../diagnostics/spannable.dart' show
18 Spannable; 19 Spannable;
19 import '../elements/elements.dart'; 20 import '../elements/elements.dart';
20 import '../tree/tree.dart'; 21 import '../tree/tree.dart';
21 22
22 import 'registry.dart' show 23 import 'registry.dart' show
23 ResolutionRegistry; 24 ResolutionRegistry;
24 import 'scope.dart' show 25 import 'scope.dart' show
25 Scope; 26 Scope;
26 import 'type_resolver.dart' show 27 import 'type_resolver.dart' show
27 TypeResolver; 28 TypeResolver;
28 29
29 class CommonResolverVisitor<R> extends Visitor<R> { 30 class CommonResolverVisitor<R> extends Visitor<R> {
30 final Compiler compiler; 31 final Compiler compiler;
31 32
32 CommonResolverVisitor(Compiler this.compiler); 33 CommonResolverVisitor(Compiler this.compiler);
33 34
35 DiagnosticReporter get reporter => compiler.reporter;
36
34 Resolution get resolution => compiler.resolution; 37 Resolution get resolution => compiler.resolution;
35 38
36 R visitNode(Node node) { 39 R visitNode(Node node) {
37 return compiler.internalError(node, 40 return reporter.internalError(node,
38 'internal error: Unhandled node: ${node.getObjectDescription()}'); 41 'internal error: Unhandled node: ${node.getObjectDescription()}');
39 } 42 }
40 43
41 R visitEmptyStatement(Node node) => null; 44 R visitEmptyStatement(Node node) => null;
42 45
43 /** Convenience method for visiting nodes that may be null. */ 46 /** Convenience method for visiting nodes that may be null. */
44 R visit(Node node) => (node == null) ? null : node.accept(this); 47 R visit(Node node) => (node == null) ? null : node.accept(this);
45 48
46 void addDeferredAction(Element element, DeferredAction action) { 49 void addDeferredAction(Element element, DeferredAction action) {
47 compiler.enqueuer.resolution.addDeferredAction(element, action); 50 compiler.enqueuer.resolution.addDeferredAction(element, action);
(...skipping 24 matching lines...) Expand all
72 if (existing != element) { 75 if (existing != element) {
73 reportDuplicateDefinition(element.name, element, existing); 76 reportDuplicateDefinition(element.name, element, existing);
74 } 77 }
75 } 78 }
76 79
77 void checkLocalDefinitionName(Node node, Element element) { 80 void checkLocalDefinitionName(Node node, Element element) {
78 if (currentAsyncMarker != AsyncMarker.SYNC) { 81 if (currentAsyncMarker != AsyncMarker.SYNC) {
79 if (element.name == 'yield' || 82 if (element.name == 'yield' ||
80 element.name == 'async' || 83 element.name == 'async' ||
81 element.name == 'await') { 84 element.name == 'await') {
82 compiler.reportErrorMessage( 85 reporter.reportErrorMessage(
83 node, MessageKind.ASYNC_KEYWORD_AS_IDENTIFIER, 86 node, MessageKind.ASYNC_KEYWORD_AS_IDENTIFIER,
84 {'keyword': element.name, 87 {'keyword': element.name,
85 'modifier': currentAsyncMarker}); 88 'modifier': currentAsyncMarker});
86 } 89 }
87 } 90 }
88 } 91 }
89 92
90 /// Register [node] as the definition of [element]. 93 /// Register [node] as the definition of [element].
91 void defineLocalVariable(Node node, LocalVariableElement element) { 94 void defineLocalVariable(Node node, LocalVariableElement element) {
92 if (element == null) { 95 if (element == null) {
93 throw compiler.internalError(node, 'element is null'); 96 throw reporter.internalError(node, 'element is null');
94 } 97 }
95 checkLocalDefinitionName(node, element); 98 checkLocalDefinitionName(node, element);
96 registry.defineElement(node, element); 99 registry.defineElement(node, element);
97 } 100 }
98 101
99 void reportDuplicateDefinition(String name, 102 void reportDuplicateDefinition(String name,
100 Spannable definition, 103 Spannable definition,
101 Spannable existing) { 104 Spannable existing) {
102 compiler.reportError( 105 reporter.reportError(
103 compiler.createMessage( 106 reporter.createMessage(
104 definition, 107 definition,
105 MessageKind.DUPLICATE_DEFINITION, 108 MessageKind.DUPLICATE_DEFINITION,
106 {'name': name}), 109 {'name': name}),
107 <DiagnosticMessage>[ 110 <DiagnosticMessage>[
108 compiler.createMessage( 111 reporter.createMessage(
109 existing, 112 existing,
110 MessageKind.EXISTING_DEFINITION, 113 MessageKind.EXISTING_DEFINITION,
111 {'name': name}), 114 {'name': name}),
112 ]); 115 ]);
113 } 116 }
114 } 117 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/resolution.dart ('k') | pkg/compiler/lib/src/resolution/signatures.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698