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

Side by Side Diff: pkg/compiler/lib/src/typechecker.dart

Issue 1148343004: Remove ConstantExpression.value (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 6 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) 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 part of dart2js; 5 part of dart2js;
6 6
7 class TypeCheckerTask extends CompilerTask { 7 class TypeCheckerTask extends CompilerTask {
8 TypeCheckerTask(Compiler compiler) : super(compiler); 8 TypeCheckerTask(Compiler compiler) : super(compiler);
9 String get name => "Type checker"; 9 String get name => "Type checker";
10 10
(...skipping 1789 matching lines...) Expand 10 before | Expand all | Expand 10 after
1800 analyze(switchCase); 1800 analyze(switchCase);
1801 } 1801 }
1802 1802
1803 if (!hasDefaultCase && expressionType.isEnumType) { 1803 if (!hasDefaultCase && expressionType.isEnumType) {
1804 compiler.enqueuer.resolution.addDeferredAction(executableContext, () { 1804 compiler.enqueuer.resolution.addDeferredAction(executableContext, () {
1805 Map<ConstantValue, FieldElement> enumValues = 1805 Map<ConstantValue, FieldElement> enumValues =
1806 <ConstantValue, FieldElement>{}; 1806 <ConstantValue, FieldElement>{};
1807 List<FieldElement> unreferencedFields = <FieldElement>[]; 1807 List<FieldElement> unreferencedFields = <FieldElement>[];
1808 EnumClassElement enumClass = expressionType.element; 1808 EnumClassElement enumClass = expressionType.element;
1809 enumClass.enumValues.forEach((FieldElement field) { 1809 enumClass.enumValues.forEach((FieldElement field) {
1810 ConstantExpression constantExpression = 1810 ConstantValue constantValue =
1811 compiler.constants.getConstantForVariable(field); 1811 compiler.constants.getConstantValueForVariable(field);
1812 if (constantExpression == null) { 1812 if (constantValue == null) {
1813 // The field might not have been resolved. 1813 // The field might not have been resolved.
1814 unreferencedFields.add(field); 1814 unreferencedFields.add(field);
1815 } else { 1815 } else {
1816 enumValues[constantExpression.value] = field; 1816 enumValues[constantValue] = field;
1817 } 1817 }
1818 }); 1818 });
1819 1819
1820 for (SwitchCase switchCase in node.cases) { 1820 for (SwitchCase switchCase in node.cases) {
1821 for (Node labelOrCase in switchCase.labelsAndCases) { 1821 for (Node labelOrCase in switchCase.labelsAndCases) {
1822 CaseMatch caseMatch = labelOrCase.asCaseMatch(); 1822 CaseMatch caseMatch = labelOrCase.asCaseMatch();
1823 if (caseMatch != null) { 1823 if (caseMatch != null) {
1824 ConstantExpression caseConstant = 1824 ConstantExpression caseConstant =
1825 compiler.resolver.constantCompiler.compileNode( 1825 compiler.resolver.constantCompiler.compileNode(
1826 caseMatch.expression, elements); 1826 caseMatch.expression, elements);
1827 enumValues.remove(caseConstant.value); 1827 enumValues.remove(
1828 compiler.constants.getConstantValue(caseConstant));
1828 } 1829 }
1829 } 1830 }
1830 } 1831 }
1831 unreferencedFields.addAll(enumValues.values); 1832 unreferencedFields.addAll(enumValues.values);
1832 if (!unreferencedFields.isEmpty) { 1833 if (!unreferencedFields.isEmpty) {
1833 compiler.reportWarning(node, MessageKind.MISSING_ENUM_CASES, 1834 compiler.reportWarning(node, MessageKind.MISSING_ENUM_CASES,
1834 {'enumType': expressionType, 1835 {'enumType': expressionType,
1835 'enumValues': unreferencedFields.map((e) => e.name).join(', ')}); 1836 'enumValues': unreferencedFields.map((e) => e.name).join(', ')});
1836 } 1837 }
1837 }); 1838 });
(...skipping 24 matching lines...) Expand all
1862 1863
1863 visitTypedef(Typedef node) { 1864 visitTypedef(Typedef node) {
1864 // Do not typecheck [Typedef] nodes. 1865 // Do not typecheck [Typedef] nodes.
1865 } 1866 }
1866 1867
1867 visitNode(Node node) { 1868 visitNode(Node node) {
1868 compiler.internalError(node, 1869 compiler.internalError(node,
1869 'Unexpected node ${node.getObjectDescription()} in the type checker.'); 1870 'Unexpected node ${node.getObjectDescription()} in the type checker.');
1870 } 1871 }
1871 } 1872 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart ('k') | pkg/compiler/lib/src/use_unused_api.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698