OLD | NEW |
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 | 4 |
5 library analyzer.test.constant_test; | 5 library analyzer.test.constant_test; |
6 | 6 |
7 import 'package:analyzer/context/declared_variables.dart'; | 7 import 'package:analyzer/context/declared_variables.dart'; |
8 import 'package:analyzer/dart/ast/ast.dart'; | 8 import 'package:analyzer/dart/ast/ast.dart'; |
9 import 'package:analyzer/dart/ast/token.dart'; | 9 import 'package:analyzer/dart/ast/token.dart'; |
10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
11 import 'package:analyzer/error/error.dart'; | 11 import 'package:analyzer/error/error.dart'; |
12 import 'package:analyzer/error/listener.dart'; | 12 import 'package:analyzer/error/listener.dart'; |
13 import 'package:analyzer/src/dart/element/element.dart'; | 13 import 'package:analyzer/src/dart/element/element.dart'; |
14 import 'package:analyzer/src/error/codes.dart'; | 14 import 'package:analyzer/src/error/codes.dart'; |
15 import 'package:analyzer/src/generated/constant.dart'; | 15 import 'package:analyzer/src/generated/constant.dart'; |
16 import 'package:analyzer/src/generated/engine.dart'; | 16 import 'package:analyzer/src/generated/engine.dart'; |
17 import 'package:analyzer/src/generated/resolver.dart'; | 17 import 'package:analyzer/src/generated/resolver.dart'; |
18 import 'package:analyzer/src/generated/source.dart'; | 18 import 'package:analyzer/src/generated/source.dart'; |
19 import 'package:analyzer/src/generated/source_io.dart'; | 19 import 'package:analyzer/src/generated/source_io.dart'; |
20 import 'package:analyzer/src/generated/testing/ast_factory.dart'; | 20 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
21 import 'package:analyzer/src/generated/testing/test_type_provider.dart'; | 21 import 'package:analyzer/src/generated/testing/test_type_provider.dart'; |
22 import 'package:analyzer/src/task/dart.dart'; | 22 import 'package:analyzer/src/task/dart.dart'; |
23 import 'package:path/path.dart'; | 23 import 'package:path/path.dart'; |
24 import 'package:test/test.dart'; | 24 import 'package:test/test.dart'; |
25 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 25 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
26 | 26 |
27 import '../../../generated/resolver_test_case.dart'; | 27 import '../../../generated/resolver_test_case.dart'; |
28 import '../../../generated/test_support.dart'; | 28 import '../../../generated/test_support.dart'; |
29 | 29 |
30 main() { | 30 main() { |
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1400 } else { | 1400 } else { |
1401 expect(result.value, isNull); | 1401 expect(result.value, isNull); |
1402 } | 1402 } |
1403 } | 1403 } |
1404 } | 1404 } |
1405 } | 1405 } |
1406 | 1406 |
1407 @reflectiveTest | 1407 @reflectiveTest |
1408 class ConstantVisitorTest extends ResolverTestCase { | 1408 class ConstantVisitorTest extends ResolverTestCase { |
1409 void test_visitBinaryExpression_questionQuestion_notNull_notNull() { | 1409 void test_visitBinaryExpression_questionQuestion_notNull_notNull() { |
1410 Expression left = AstFactory.string2('a'); | 1410 Expression left = AstTestFactory.string2('a'); |
1411 Expression right = AstFactory.string2('b'); | 1411 Expression right = AstTestFactory.string2('b'); |
1412 Expression expression = | 1412 Expression expression = AstTestFactory.binaryExpression( |
1413 AstFactory.binaryExpression(left, TokenType.QUESTION_QUESTION, right); | 1413 left, TokenType.QUESTION_QUESTION, right); |
1414 | 1414 |
1415 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1415 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1416 ErrorReporter errorReporter = | 1416 ErrorReporter errorReporter = |
1417 new ErrorReporter(errorListener, _dummySource()); | 1417 new ErrorReporter(errorListener, _dummySource()); |
1418 DartObjectImpl result = _evaluate(expression, errorReporter); | 1418 DartObjectImpl result = _evaluate(expression, errorReporter); |
1419 expect(result, isNotNull); | 1419 expect(result, isNotNull); |
1420 expect(result.isNull, isFalse); | 1420 expect(result.isNull, isFalse); |
1421 expect(result.toStringValue(), 'a'); | 1421 expect(result.toStringValue(), 'a'); |
1422 errorListener.assertNoErrors(); | 1422 errorListener.assertNoErrors(); |
1423 } | 1423 } |
1424 | 1424 |
1425 void test_visitBinaryExpression_questionQuestion_null_notNull() { | 1425 void test_visitBinaryExpression_questionQuestion_null_notNull() { |
1426 Expression left = AstFactory.nullLiteral(); | 1426 Expression left = AstTestFactory.nullLiteral(); |
1427 Expression right = AstFactory.string2('b'); | 1427 Expression right = AstTestFactory.string2('b'); |
1428 Expression expression = | 1428 Expression expression = AstTestFactory.binaryExpression( |
1429 AstFactory.binaryExpression(left, TokenType.QUESTION_QUESTION, right); | 1429 left, TokenType.QUESTION_QUESTION, right); |
1430 | 1430 |
1431 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1431 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1432 ErrorReporter errorReporter = | 1432 ErrorReporter errorReporter = |
1433 new ErrorReporter(errorListener, _dummySource()); | 1433 new ErrorReporter(errorListener, _dummySource()); |
1434 DartObjectImpl result = _evaluate(expression, errorReporter); | 1434 DartObjectImpl result = _evaluate(expression, errorReporter); |
1435 expect(result, isNotNull); | 1435 expect(result, isNotNull); |
1436 expect(result.isNull, isFalse); | 1436 expect(result.isNull, isFalse); |
1437 expect(result.toStringValue(), 'b'); | 1437 expect(result.toStringValue(), 'b'); |
1438 errorListener.assertNoErrors(); | 1438 errorListener.assertNoErrors(); |
1439 } | 1439 } |
1440 | 1440 |
1441 void test_visitBinaryExpression_questionQuestion_null_null() { | 1441 void test_visitBinaryExpression_questionQuestion_null_null() { |
1442 Expression left = AstFactory.nullLiteral(); | 1442 Expression left = AstTestFactory.nullLiteral(); |
1443 Expression right = AstFactory.nullLiteral(); | 1443 Expression right = AstTestFactory.nullLiteral(); |
1444 Expression expression = | 1444 Expression expression = AstTestFactory.binaryExpression( |
1445 AstFactory.binaryExpression(left, TokenType.QUESTION_QUESTION, right); | 1445 left, TokenType.QUESTION_QUESTION, right); |
1446 | 1446 |
1447 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1447 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1448 ErrorReporter errorReporter = | 1448 ErrorReporter errorReporter = |
1449 new ErrorReporter(errorListener, _dummySource()); | 1449 new ErrorReporter(errorListener, _dummySource()); |
1450 DartObjectImpl result = _evaluate(expression, errorReporter); | 1450 DartObjectImpl result = _evaluate(expression, errorReporter); |
1451 expect(result, isNotNull); | 1451 expect(result, isNotNull); |
1452 expect(result.isNull, isTrue); | 1452 expect(result.isNull, isTrue); |
1453 errorListener.assertNoErrors(); | 1453 errorListener.assertNoErrors(); |
1454 } | 1454 } |
1455 | 1455 |
1456 void test_visitConditionalExpression_false() { | 1456 void test_visitConditionalExpression_false() { |
1457 Expression thenExpression = AstFactory.integer(1); | 1457 Expression thenExpression = AstTestFactory.integer(1); |
1458 Expression elseExpression = AstFactory.integer(0); | 1458 Expression elseExpression = AstTestFactory.integer(0); |
1459 ConditionalExpression expression = AstFactory.conditionalExpression( | 1459 ConditionalExpression expression = AstTestFactory.conditionalExpression( |
1460 AstFactory.booleanLiteral(false), thenExpression, elseExpression); | 1460 AstTestFactory.booleanLiteral(false), thenExpression, elseExpression); |
1461 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1461 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1462 ErrorReporter errorReporter = | 1462 ErrorReporter errorReporter = |
1463 new ErrorReporter(errorListener, _dummySource()); | 1463 new ErrorReporter(errorListener, _dummySource()); |
1464 _assertValue(0, _evaluate(expression, errorReporter)); | 1464 _assertValue(0, _evaluate(expression, errorReporter)); |
1465 errorListener.assertNoErrors(); | 1465 errorListener.assertNoErrors(); |
1466 } | 1466 } |
1467 | 1467 |
1468 void test_visitConditionalExpression_nonBooleanCondition() { | 1468 void test_visitConditionalExpression_nonBooleanCondition() { |
1469 Expression thenExpression = AstFactory.integer(1); | 1469 Expression thenExpression = AstTestFactory.integer(1); |
1470 Expression elseExpression = AstFactory.integer(0); | 1470 Expression elseExpression = AstTestFactory.integer(0); |
1471 NullLiteral conditionExpression = AstFactory.nullLiteral(); | 1471 NullLiteral conditionExpression = AstTestFactory.nullLiteral(); |
1472 ConditionalExpression expression = AstFactory.conditionalExpression( | 1472 ConditionalExpression expression = AstTestFactory.conditionalExpression( |
1473 conditionExpression, thenExpression, elseExpression); | 1473 conditionExpression, thenExpression, elseExpression); |
1474 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1474 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1475 ErrorReporter errorReporter = | 1475 ErrorReporter errorReporter = |
1476 new ErrorReporter(errorListener, _dummySource()); | 1476 new ErrorReporter(errorListener, _dummySource()); |
1477 DartObjectImpl result = _evaluate(expression, errorReporter); | 1477 DartObjectImpl result = _evaluate(expression, errorReporter); |
1478 expect(result, isNull); | 1478 expect(result, isNull); |
1479 errorListener | 1479 errorListener |
1480 .assertErrorsWithCodes([CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]); | 1480 .assertErrorsWithCodes([CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]); |
1481 } | 1481 } |
1482 | 1482 |
1483 void test_visitConditionalExpression_nonConstantElse() { | 1483 void test_visitConditionalExpression_nonConstantElse() { |
1484 Expression thenExpression = AstFactory.integer(1); | 1484 Expression thenExpression = AstTestFactory.integer(1); |
1485 Expression elseExpression = AstFactory.identifier3("x"); | 1485 Expression elseExpression = AstTestFactory.identifier3("x"); |
1486 ConditionalExpression expression = AstFactory.conditionalExpression( | 1486 ConditionalExpression expression = AstTestFactory.conditionalExpression( |
1487 AstFactory.booleanLiteral(true), thenExpression, elseExpression); | 1487 AstTestFactory.booleanLiteral(true), thenExpression, elseExpression); |
1488 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1488 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1489 ErrorReporter errorReporter = | 1489 ErrorReporter errorReporter = |
1490 new ErrorReporter(errorListener, _dummySource()); | 1490 new ErrorReporter(errorListener, _dummySource()); |
1491 DartObjectImpl result = _evaluate(expression, errorReporter); | 1491 DartObjectImpl result = _evaluate(expression, errorReporter); |
1492 expect(result, isNull); | 1492 expect(result, isNull); |
1493 errorListener | 1493 errorListener |
1494 .assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]); | 1494 .assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]); |
1495 } | 1495 } |
1496 | 1496 |
1497 void test_visitConditionalExpression_nonConstantThen() { | 1497 void test_visitConditionalExpression_nonConstantThen() { |
1498 Expression thenExpression = AstFactory.identifier3("x"); | 1498 Expression thenExpression = AstTestFactory.identifier3("x"); |
1499 Expression elseExpression = AstFactory.integer(0); | 1499 Expression elseExpression = AstTestFactory.integer(0); |
1500 ConditionalExpression expression = AstFactory.conditionalExpression( | 1500 ConditionalExpression expression = AstTestFactory.conditionalExpression( |
1501 AstFactory.booleanLiteral(true), thenExpression, elseExpression); | 1501 AstTestFactory.booleanLiteral(true), thenExpression, elseExpression); |
1502 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1502 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1503 ErrorReporter errorReporter = | 1503 ErrorReporter errorReporter = |
1504 new ErrorReporter(errorListener, _dummySource()); | 1504 new ErrorReporter(errorListener, _dummySource()); |
1505 DartObjectImpl result = _evaluate(expression, errorReporter); | 1505 DartObjectImpl result = _evaluate(expression, errorReporter); |
1506 expect(result, isNull); | 1506 expect(result, isNull); |
1507 errorListener | 1507 errorListener |
1508 .assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]); | 1508 .assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]); |
1509 } | 1509 } |
1510 | 1510 |
1511 void test_visitConditionalExpression_true() { | 1511 void test_visitConditionalExpression_true() { |
1512 Expression thenExpression = AstFactory.integer(1); | 1512 Expression thenExpression = AstTestFactory.integer(1); |
1513 Expression elseExpression = AstFactory.integer(0); | 1513 Expression elseExpression = AstTestFactory.integer(0); |
1514 ConditionalExpression expression = AstFactory.conditionalExpression( | 1514 ConditionalExpression expression = AstTestFactory.conditionalExpression( |
1515 AstFactory.booleanLiteral(true), thenExpression, elseExpression); | 1515 AstTestFactory.booleanLiteral(true), thenExpression, elseExpression); |
1516 GatheringErrorListener errorListener = new GatheringErrorListener(); | 1516 GatheringErrorListener errorListener = new GatheringErrorListener(); |
1517 ErrorReporter errorReporter = | 1517 ErrorReporter errorReporter = |
1518 new ErrorReporter(errorListener, _dummySource()); | 1518 new ErrorReporter(errorListener, _dummySource()); |
1519 _assertValue(1, _evaluate(expression, errorReporter)); | 1519 _assertValue(1, _evaluate(expression, errorReporter)); |
1520 errorListener.assertNoErrors(); | 1520 errorListener.assertNoErrors(); |
1521 } | 1521 } |
1522 | 1522 |
1523 void test_visitSimpleIdentifier_className() { | 1523 void test_visitSimpleIdentifier_className() { |
1524 CompilationUnit compilationUnit = resolveSource(''' | 1524 CompilationUnit compilationUnit = resolveSource(''' |
1525 const a = C; | 1525 const a = C; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 } | 1604 } |
1605 } | 1605 } |
1606 | 1606 |
1607 @reflectiveTest | 1607 @reflectiveTest |
1608 class StrongConstantValueComputerTest extends ConstantValueComputerTest { | 1608 class StrongConstantValueComputerTest extends ConstantValueComputerTest { |
1609 void setUp() { | 1609 void setUp() { |
1610 super.setUp(); | 1610 super.setUp(); |
1611 resetWithOptions(new AnalysisOptionsImpl()..strongMode = true); | 1611 resetWithOptions(new AnalysisOptionsImpl()..strongMode = true); |
1612 } | 1612 } |
1613 } | 1613 } |
OLD | NEW |