| 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 |