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

Side by Side Diff: pkg/kernel/lib/verifier.dart

Issue 3002053002: Make package:kernel's verifier pass fasta-compiled code, make fasta not return exitcode 1 for warni…
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 library kernel.checks; 4 library kernel.checks;
5 5
6 import 'ast.dart'; 6 import 'ast.dart';
7 import 'transformations/flags.dart'; 7 import 'transformations/flags.dart';
8 8
9 void verifyProgram(Program program) { 9 void verifyProgram(Program program) {
10 VerifyingVisitor.check(program); 10 VerifyingVisitor.check(program);
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 checkVariableInScope(node.variable, node); 356 checkVariableInScope(node.variable, node);
357 visitChildren(node); 357 visitChildren(node);
358 } 358 }
359 359
360 @override 360 @override
361 visitStaticGet(StaticGet node) { 361 visitStaticGet(StaticGet node) {
362 visitChildren(node); 362 visitChildren(node);
363 if (node.target == null) { 363 if (node.target == null) {
364 problem(node, "StaticGet without target."); 364 problem(node, "StaticGet without target.");
365 } 365 }
366 if (!node.target.hasGetter) { 366 // Currently Constructor.hasGetter returns `false` even though fasta uses it
367 // as a getter for internal purposes:
368 //
369 // Fasta is letting all call site of a redirecting constructor be resolved
370 // to the real target. In order to resolve it, it seems to add a body into
371 // the redirecting-factory constructor which caches the target constructor.
372 // That cache is via a `StaticGet(real-constructor)` node, which we make
373 // here pass the verifier.
374 if (!node.target.hasGetter && node.target is! Constructor) {
ahe 2017/08/21 13:48:33 Can you show provide me with an example of how thi
kustermann 2017/08/21 14:43:44 Followed Peter's recommendation offline and commen
367 problem(node, "StaticGet of '${node.target}' without getter."); 375 problem(node, "StaticGet of '${node.target}' without getter.");
368 } 376 }
369 if (node.target.isInstanceMember) { 377 if (node.target.isInstanceMember) {
370 problem(node, "StaticGet of '${node.target}' that's an instance member."); 378 problem(node, "StaticGet of '${node.target}' that's an instance member.");
371 } 379 }
372 } 380 }
373 381
374 @override 382 @override
375 visitStaticSet(StaticSet node) { 383 visitStaticSet(StaticSet node) {
376 visitChildren(node); 384 visitChildren(node);
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 var oldParent = parent; 609 var oldParent = parent;
602 parent = node; 610 parent = node;
603 node.visitChildren(this); 611 node.visitChildren(this);
604 parent = oldParent; 612 parent = oldParent;
605 } 613 }
606 } 614 }
607 615
608 void checkInitializers(Constructor constructor) { 616 void checkInitializers(Constructor constructor) {
609 // TODO(ahe): I'll add more here in other CLs. 617 // TODO(ahe): I'll add more here in other CLs.
610 } 618 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698