Revert r27592, some unit tests fail.
Review URL: https://codereview.chromium.org//23904023 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27593 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
@@ -536,9 +536,6 @@ class ClosureTranslator extends Visitor {
|
||||
} else if (node.isTypeCast) {
|
||||
DartType type = elements.getType(node.arguments.head);
|
||||
analyzeType(type);
|
||||
} else if (element == compiler.assertMethod
|
||||
&& !compiler.enableUserAssertions) {
|
||||
return;
|
||||
}
|
||||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@@ -44,9 +44,9 @@ class DeclarationTypePlaceholder {
|
||||
class SendVisitor extends ResolvedVisitor {
|
||||
final PlaceholderCollector collector;
|
||||
|
||||
SendVisitor(collector, TreeElements elements)
|
||||
: this.collector = collector,
|
||||
super(elements, collector.compiler);
|
||||
get compiler => collector.compiler;
|
||||
|
||||
SendVisitor(this.collector, TreeElements elements) : super(elements);
|
||||
|
||||
visitOperatorSend(Send node) {
|
||||
}
|
||||
@@ -104,10 +104,6 @@ class SendVisitor extends ResolvedVisitor {
|
||||
}
|
||||
}
|
||||
|
||||
visitAssert(node) {
|
||||
visitStaticSend(node);
|
||||
}
|
||||
|
||||
visitStaticSend(Send node) {
|
||||
final element = elements[node];
|
||||
collector.backend.registerStaticSend(element, node);
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
part of dart2js;
|
||||
|
||||
abstract class ResolvedVisitor<R> extends Visitor<R> {
|
||||
final Compiler compiler;
|
||||
TreeElements elements;
|
||||
|
||||
ResolvedVisitor(this.elements, this.compiler);
|
||||
ResolvedVisitor(this.elements);
|
||||
|
||||
R visitSend(Send node) {
|
||||
Element element = elements[node];
|
||||
@@ -27,8 +26,6 @@ abstract class ResolvedVisitor<R> extends Visitor<R> {
|
||||
return visitStaticSend(node);
|
||||
} else if (Elements.isClosureSend(node, element)) {
|
||||
return visitClosureSend(node);
|
||||
} else if (element == compiler.assertMethod) {
|
||||
return visitAssert(node);
|
||||
} else {
|
||||
if (Elements.isUnresolved(element)) {
|
||||
if (element == null) {
|
||||
@@ -62,7 +59,6 @@ abstract class ResolvedVisitor<R> extends Visitor<R> {
|
||||
R visitDynamicSend(Send node);
|
||||
R visitStaticSend(Send node);
|
||||
R visitTypeReferenceSend(Send node);
|
||||
R visitAssert(Send node);
|
||||
|
||||
void internalError(String reason, {Node node});
|
||||
|
||||
|
||||
@@ -935,7 +935,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
||||
sourceElementStack = <Element>[work.element],
|
||||
inliningStack = <InliningState>[],
|
||||
rti = builder.backend.rti,
|
||||
super(work.resolutionTree, builder.compiler) {
|
||||
super(work.resolutionTree) {
|
||||
localsHandler = new LocalsHandler(this);
|
||||
}
|
||||
|
||||
@@ -3601,14 +3601,6 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
||||
}
|
||||
}
|
||||
|
||||
visitAssert(node) {
|
||||
if (!compiler.enableUserAssertions) {
|
||||
stack.add(graph.addConstantNull(compiler));
|
||||
return;
|
||||
}
|
||||
visitStaticSend(node);
|
||||
}
|
||||
|
||||
visitStaticSend(Send node) {
|
||||
Selector selector = elements.getSelector(node);
|
||||
Element element = elements[node];
|
||||
@@ -3622,6 +3614,11 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
||||
argumentNodes: node.arguments);
|
||||
return;
|
||||
}
|
||||
if (identical(element, compiler.assertMethod)
|
||||
&& !compiler.enableUserAssertions) {
|
||||
stack.add(graph.addConstantNull(compiler));
|
||||
return;
|
||||
}
|
||||
compiler.ensure(!element.isGenerativeConstructor());
|
||||
if (element.isFunction()) {
|
||||
var inputs = <HInstruction>[];
|
||||
|
||||
@@ -1666,7 +1666,7 @@ class TypeInferrerVisitor extends ResolvedVisitor<ConcreteType> {
|
||||
ConcreteTypesInferrer inferrer, this.environment)
|
||||
: this.inferrer = inferrer
|
||||
, this.backend = inferrer.compiler.backend
|
||||
, super(elements, inferrer.compiler) {
|
||||
, super(elements) {
|
||||
for (Element element in elements.otherDependencies) {
|
||||
if (element.isClass()) {
|
||||
inferrer.augmentSeenClasses(inferrer.normalize(element));
|
||||
@@ -2378,14 +2378,6 @@ class TypeInferrerVisitor extends ResolvedVisitor<ConcreteType> {
|
||||
return inferrer.unknownConcreteType;
|
||||
}
|
||||
|
||||
ConcreteType visitAssert(Send node) {
|
||||
if (!compiler.enableUserAssertions) {
|
||||
return inferrer.nullConcreteType;
|
||||
} else {
|
||||
return visitStaticSend(node);
|
||||
}
|
||||
}
|
||||
|
||||
ConcreteType visitStaticSend(Send node) {
|
||||
if (elements.getSelector(node).name == const SourceString('JS')) {
|
||||
return inferrer.getNativeCallReturnType(node);
|
||||
|
||||
@@ -554,6 +554,7 @@ abstract class InferrerVisitor
|
||||
final Element analyzedElement;
|
||||
final TypeSystem<T> types;
|
||||
final E inferrer;
|
||||
final Compiler compiler;
|
||||
final Map<TargetElement, List<LocalsHandler<T>>> breaksFor =
|
||||
new Map<TargetElement, List<LocalsHandler<T>>>();
|
||||
final Map<TargetElement, List<LocalsHandler>> continuesFor =
|
||||
@@ -583,10 +584,10 @@ abstract class InferrerVisitor
|
||||
this.types,
|
||||
Compiler compiler,
|
||||
[LocalsHandler<T> handler])
|
||||
: this.analyzedElement = analyzedElement,
|
||||
: this.compiler = compiler,
|
||||
this.analyzedElement = analyzedElement,
|
||||
this.locals = handler,
|
||||
super(compiler.enqueuer.resolution.getCachedElements(analyzedElement),
|
||||
compiler) {
|
||||
super(compiler.enqueuer.resolution.getCachedElements(analyzedElement)) {
|
||||
if (handler != null) return;
|
||||
Node node = analyzedElement.parseNode(compiler);
|
||||
FieldInitializationScope<T> fieldScope =
|
||||
@@ -614,13 +615,6 @@ abstract class InferrerVisitor
|
||||
|
||||
T visitFunctionExpression(FunctionExpression node);
|
||||
|
||||
T visitAssert(Send node) {
|
||||
if (!compiler.enableUserAssertions) {
|
||||
return types.nullType;
|
||||
}
|
||||
return visitStaticSend(node);
|
||||
}
|
||||
|
||||
T visitNode(Node node) {
|
||||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
import "compiler_annotations.dart";
|
||||
|
||||
@DontInline()
|
||||
foo() {
|
||||
() => 42;
|
||||
int a;
|
||||
assert((a = 2) == 2);
|
||||
return a;
|
||||
}
|
||||
|
||||
main() {
|
||||
bool isAssertEnabled = false;
|
||||
assert(isAssertEnabled = true);
|
||||
if (isAssertEnabled) {
|
||||
Expect.equals(44, foo() + 42);
|
||||
} else {
|
||||
Expect.throws(() => foo() + 42, (e) => e is NoSuchMethodError);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user