| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'dart:collection'; | 6 import 'dart:collection'; |
| 7 | 7 |
| 8 import 'package:async_helper/async_helper.dart'; | 8 import 'package:async_helper/async_helper.dart'; |
| 9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
| 10 import 'package:compiler/src/constants/expressions.dart'; | 10 import 'package:compiler/src/constants/expressions.dart'; |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 ClassElement classB = compiler.mainApp.find("B"); | 220 ClassElement classB = compiler.mainApp.find("B"); |
| 221 FunctionElement fooB = classB.lookupLocalMember("foo"); | 221 FunctionElement fooB = classB.lookupLocalMember("foo"); |
| 222 ClassElement classA = compiler.mainApp.find("A"); | 222 ClassElement classA = compiler.mainApp.find("A"); |
| 223 FunctionElement fooA = classA.lookupLocalMember("foo"); | 223 FunctionElement fooA = classA.lookupLocalMember("foo"); |
| 224 | 224 |
| 225 ResolverVisitor visitor = | 225 ResolverVisitor visitor = |
| 226 new ResolverVisitor(compiler, fooB, | 226 new ResolverVisitor(compiler, fooB, |
| 227 new ResolutionRegistry(compiler, | 227 new ResolutionRegistry(compiler, |
| 228 new CollectingTreeElements(fooB))); | 228 new CollectingTreeElements(fooB))); |
| 229 FunctionExpression node = | 229 FunctionExpression node = |
| 230 (fooB as FunctionElementX).parseNode(compiler.parsing); | 230 (fooB as FunctionElementX).parseNode(compiler.parsingContext); |
| 231 visitor.visit(node.body); | 231 visitor.visit(node.body); |
| 232 Map mapping = map(visitor); | 232 Map mapping = map(visitor); |
| 233 | 233 |
| 234 Send superCall = node.body.asReturn().expression; | 234 Send superCall = node.body.asReturn().expression; |
| 235 FunctionElement called = mapping[superCall]; | 235 FunctionElement called = mapping[superCall]; |
| 236 Expect.isNotNull(called); | 236 Expect.isNotNull(called); |
| 237 Expect.equals(fooA, called); | 237 Expect.equals(fooA, called); |
| 238 }); | 238 }); |
| 239 } | 239 } |
| 240 | 240 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 264 MockCompiler.create((MockCompiler compiler) { | 264 MockCompiler.create((MockCompiler compiler) { |
| 265 compiler.parseScript("class Foo { foo() { return this; } }"); | 265 compiler.parseScript("class Foo { foo() { return this; } }"); |
| 266 compiler.resolveStatement("Foo foo;"); | 266 compiler.resolveStatement("Foo foo;"); |
| 267 ClassElement fooElement = compiler.mainApp.find("Foo"); | 267 ClassElement fooElement = compiler.mainApp.find("Foo"); |
| 268 FunctionElement funElement = fooElement.lookupLocalMember("foo"); | 268 FunctionElement funElement = fooElement.lookupLocalMember("foo"); |
| 269 ResolverVisitor visitor = | 269 ResolverVisitor visitor = |
| 270 new ResolverVisitor(compiler, funElement, | 270 new ResolverVisitor(compiler, funElement, |
| 271 new ResolutionRegistry(compiler, | 271 new ResolutionRegistry(compiler, |
| 272 new CollectingTreeElements(funElement))); | 272 new CollectingTreeElements(funElement))); |
| 273 FunctionExpression function = | 273 FunctionExpression function = |
| 274 (funElement as FunctionElementX).parseNode(compiler.parsing); | 274 (funElement as FunctionElementX).parseNode(compiler.parsingContext); |
| 275 visitor.visit(function.body); | 275 visitor.visit(function.body); |
| 276 Map mapping = map(visitor); | 276 Map mapping = map(visitor); |
| 277 List<Element> values = mapping.values.toList(); | 277 List<Element> values = mapping.values.toList(); |
| 278 DiagnosticCollector collector = compiler.diagnosticCollector; | 278 DiagnosticCollector collector = compiler.diagnosticCollector; |
| 279 Expect.equals(0, mapping.length); | 279 Expect.equals(0, mapping.length); |
| 280 Expect.equals(0, collector.warnings.length); | 280 Expect.equals(0, collector.warnings.length); |
| 281 }), | 281 }), |
| 282 MockCompiler.create((MockCompiler compiler) { | 282 MockCompiler.create((MockCompiler compiler) { |
| 283 compiler.resolveStatement("main() { return this; }"); | 283 compiler.resolveStatement("main() { return this; }"); |
| 284 DiagnosticCollector collector = compiler.diagnosticCollector; | 284 DiagnosticCollector collector = compiler.diagnosticCollector; |
| 285 Expect.equals(0, collector.warnings.length); | 285 Expect.equals(0, collector.warnings.length); |
| 286 Expect.equals(1, collector.errors.length); | 286 Expect.equals(1, collector.errors.length); |
| 287 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, | 287 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, |
| 288 collector.errors.first.message.kind); | 288 collector.errors.first.message.kind); |
| 289 }), | 289 }), |
| 290 MockCompiler.create((MockCompiler compiler) { | 290 MockCompiler.create((MockCompiler compiler) { |
| 291 compiler.parseScript("class Foo { static foo() { return this; } }"); | 291 compiler.parseScript("class Foo { static foo() { return this; } }"); |
| 292 compiler.resolveStatement("Foo foo;"); | 292 compiler.resolveStatement("Foo foo;"); |
| 293 ClassElement fooElement = compiler.mainApp.find("Foo"); | 293 ClassElement fooElement = compiler.mainApp.find("Foo"); |
| 294 FunctionElement funElement = fooElement.lookupLocalMember("foo"); | 294 FunctionElement funElement = fooElement.lookupLocalMember("foo"); |
| 295 ResolverVisitor visitor = new ResolverVisitor(compiler, funElement, | 295 ResolverVisitor visitor = new ResolverVisitor(compiler, funElement, |
| 296 new ResolutionRegistry(compiler, | 296 new ResolutionRegistry(compiler, |
| 297 new CollectingTreeElements(funElement))); | 297 new CollectingTreeElements(funElement))); |
| 298 FunctionExpression function = | 298 FunctionExpression function = |
| 299 (funElement as FunctionElementX).parseNode(compiler.parsing); | 299 (funElement as FunctionElementX).parseNode(compiler.parsingContext); |
| 300 visitor.visit(function.body); | 300 visitor.visit(function.body); |
| 301 DiagnosticCollector collector = compiler.diagnosticCollector; | 301 DiagnosticCollector collector = compiler.diagnosticCollector; |
| 302 Expect.equals(0, collector.warnings.length); | 302 Expect.equals(0, collector.warnings.length); |
| 303 Expect.equals(1, collector.errors.length); | 303 Expect.equals(1, collector.errors.length); |
| 304 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, | 304 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, |
| 305 collector.errors.first.message.kind); | 305 collector.errors.first.message.kind); |
| 306 }), | 306 }), |
| 307 ]); | 307 ]); |
| 308 } | 308 } |
| 309 | 309 |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 Expect.isTrue(element.isSynthesized); | 658 Expect.isTrue(element.isSynthesized); |
| 659 }); | 659 }); |
| 660 } | 660 } |
| 661 | 661 |
| 662 Future testTopLevelFields() { | 662 Future testTopLevelFields() { |
| 663 return MockCompiler.create((MockCompiler compiler) { | 663 return MockCompiler.create((MockCompiler compiler) { |
| 664 compiler.parseScript("int a;"); | 664 compiler.parseScript("int a;"); |
| 665 VariableElementX element = compiler.mainApp.find("a"); | 665 VariableElementX element = compiler.mainApp.find("a"); |
| 666 Expect.equals(ElementKind.FIELD, element.kind); | 666 Expect.equals(ElementKind.FIELD, element.kind); |
| 667 VariableDefinitions node = | 667 VariableDefinitions node = |
| 668 element.variables.parseNode(element, compiler.parsing); | 668 element.variables.parseNode(element, compiler.parsingContext); |
| 669 Identifier typeName = node.type.typeName; | 669 Identifier typeName = node.type.typeName; |
| 670 Expect.equals(typeName.source, 'int'); | 670 Expect.equals(typeName.source, 'int'); |
| 671 | 671 |
| 672 compiler.parseScript("var b, c;"); | 672 compiler.parseScript("var b, c;"); |
| 673 VariableElementX bElement = compiler.mainApp.find("b"); | 673 VariableElementX bElement = compiler.mainApp.find("b"); |
| 674 VariableElementX cElement = compiler.mainApp.find("c"); | 674 VariableElementX cElement = compiler.mainApp.find("c"); |
| 675 Expect.equals(ElementKind.FIELD, bElement.kind); | 675 Expect.equals(ElementKind.FIELD, bElement.kind); |
| 676 Expect.equals(ElementKind.FIELD, cElement.kind); | 676 Expect.equals(ElementKind.FIELD, cElement.kind); |
| 677 Expect.isTrue(bElement != cElement); | 677 Expect.isTrue(bElement != cElement); |
| 678 | 678 |
| 679 VariableDefinitions bNode = | 679 VariableDefinitions bNode = |
| 680 bElement.variables.parseNode(bElement, compiler.parsing); | 680 bElement.variables.parseNode(bElement, compiler.parsingContext); |
| 681 VariableDefinitions cNode = | 681 VariableDefinitions cNode = |
| 682 cElement.variables.parseNode(cElement, compiler.parsing); | 682 cElement.variables.parseNode(cElement, compiler.parsingContext); |
| 683 Expect.equals(bNode, cNode); | 683 Expect.equals(bNode, cNode); |
| 684 Expect.isNull(bNode.type); | 684 Expect.isNull(bNode.type); |
| 685 Expect.isTrue(bNode.modifiers.isVar); | 685 Expect.isTrue(bNode.modifiers.isVar); |
| 686 }); | 686 }); |
| 687 } | 687 } |
| 688 | 688 |
| 689 Future resolveConstructor( | 689 Future resolveConstructor( |
| 690 String script, String statement, String className, | 690 String script, String statement, String className, |
| 691 String constructor, int expectedElementCount, | 691 String constructor, int expectedElementCount, |
| 692 {List expectedWarnings: const [], | 692 {List expectedWarnings: const [], |
| (...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1441 } | 1441 } |
| 1442 main() => A.m(); | 1442 main() => A.m(); |
| 1443 ''', functionName: 'm'); | 1443 ''', functionName: 'm'); |
| 1444 check(''' | 1444 check(''' |
| 1445 class A { | 1445 class A { |
| 1446 m() => () => await - 3; | 1446 m() => () => await - 3; |
| 1447 } | 1447 } |
| 1448 main() => new A().m(); | 1448 main() => new A().m(); |
| 1449 ''', className: 'A'); | 1449 ''', className: 'A'); |
| 1450 } | 1450 } |
| OLD | NEW |