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

Side by Side Diff: lib/src/checker/checker.dart

Issue 1160223006: Fix DDC errors on DDC (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « no previous file | lib/src/checker/resolver.dart » ('j') | lib/src/checker/resolver.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 dev_compiler.src.checker.checker; 5 library dev_compiler.src.checker.checker;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/src/generated/ast.dart'; 8 import 'package:analyzer/src/generated/ast.dart';
9 import 'package:analyzer/src/generated/element.dart'; 9 import 'package:analyzer/src/generated/element.dart';
10 import 'package:analyzer/src/generated/scanner.dart' show Token, TokenType; 10 import 'package:analyzer/src/generated/scanner.dart' show Token, TokenType;
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 /// 220 ///
221 /// The [errorLocation] node indicates where errors are reported, see 221 /// The [errorLocation] node indicates where errors are reported, see
222 /// [_checkSingleOverride] for more details. 222 /// [_checkSingleOverride] for more details.
223 _checkIndividualOverridesFromClass( 223 _checkIndividualOverridesFromClass(
224 ClassDeclaration node, InterfaceType baseType, Set<String> seen) { 224 ClassDeclaration node, InterfaceType baseType, Set<String> seen) {
225 for (var member in node.members) { 225 for (var member in node.members) {
226 if (member is ConstructorDeclaration) continue; 226 if (member is ConstructorDeclaration) continue;
227 if (member is FieldDeclaration) { 227 if (member is FieldDeclaration) {
228 if (member.isStatic) continue; 228 if (member.isStatic) continue;
229 for (var variable in member.fields.variables) { 229 for (var variable in member.fields.variables) {
230 var name = variable.element.name; 230 var element = variable.element as PropertyInducingElement;
Jennifer Messerly 2015/06/01 21:52:10 random Q, do we always prefer this pattern over:
vsm 2015/06/01 22:44:19 I lean toward the rhs version - it makes it explic
Jennifer Messerly 2015/06/01 23:10:56 err, wouldn't we generate a cast in JS for both ca
231 var name = element.name;
231 if (seen.contains(name)) continue; 232 if (seen.contains(name)) continue;
232 var getter = variable.element.getter; 233 var getter = element.getter;
233 var setter = variable.element.setter; 234 var setter = element.setter;
234 bool found = _checkSingleOverride(getter, baseType, variable, member); 235 bool found = _checkSingleOverride(getter, baseType, variable, member);
235 if (!variable.isFinal && 236 if (!variable.isFinal &&
236 _checkSingleOverride(setter, baseType, variable, member)) { 237 _checkSingleOverride(setter, baseType, variable, member)) {
237 found = true; 238 found = true;
238 } 239 }
239 if (found) seen.add(name); 240 if (found) seen.add(name);
240 } 241 }
241 } else { 242 } else if (member is MethodDeclaration) {
242 assert(member is MethodDeclaration);
243 if (member.isStatic) continue; 243 if (member.isStatic) continue;
244 var method = member.element; 244 var method = member.element;
Jennifer Messerly 2015/06/01 21:52:10 instead of changing the if structure, maybe var
vsm 2015/06/01 22:44:19 It's actually on isStatic, but done there.
245 if (seen.contains(method.name)) continue; 245 if (seen.contains(method.name)) continue;
246 if (_checkSingleOverride(method, baseType, member, member)) { 246 if (_checkSingleOverride(method, baseType, member, member)) {
247 seen.add(method.name); 247 seen.add(method.name);
248 } 248 }
249 } else {
250 assert(false);
249 } 251 }
250 } 252 }
251 } 253 }
252 254
253 /// Checks that [element] correctly overrides its corresponding member in 255 /// Checks that [element] correctly overrides its corresponding member in
254 /// [type]. Returns `true` if an override was found, that is, if [element] has 256 /// [type]. Returns `true` if an override was found, that is, if [element] has
255 /// a corresponding member in [type] that it overrides. 257 /// a corresponding member in [type] that it overrides.
256 /// 258 ///
257 /// The [errorLocation] is a node where the error is reported. For example, a 259 /// The [errorLocation] is a node where the error is reported. For example, a
258 /// bad override of a method in a class with respect to its superclass is 260 /// bad override of a method in a class with respect to its superclass is
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 void _recordDynamicInvoke(AstNode node) { 842 void _recordDynamicInvoke(AstNode node) {
841 _reporter.log(new DynamicInvoke(_rules, node)); 843 _reporter.log(new DynamicInvoke(_rules, node));
842 } 844 }
843 845
844 void _recordMessage(StaticInfo info) { 846 void _recordMessage(StaticInfo info) {
845 if (info == null) return; 847 if (info == null) return;
846 if (info.level >= logger.Level.SEVERE) _failure = true; 848 if (info.level >= logger.Level.SEVERE) _failure = true;
847 _reporter.log(info); 849 _reporter.log(info);
848 } 850 }
849 } 851 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/checker/resolver.dart » ('j') | lib/src/checker/resolver.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698