| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 package com.google.dart.compiler.parser; | 5 package com.google.dart.compiler.parser; |
| 6 | 6 |
| 7 import com.google.common.annotations.VisibleForTesting; | 7 import com.google.common.annotations.VisibleForTesting; |
| 8 import com.google.common.io.CharStreams; | 8 import com.google.common.io.CharStreams; |
| 9 import com.google.dart.compiler.DartCompilationError; | 9 import com.google.dart.compiler.DartCompilationError; |
| 10 import com.google.dart.compiler.DartCompilerListener; | 10 import com.google.dart.compiler.DartCompilerListener; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 import com.google.dart.compiler.ast.DartForStatement; | 38 import com.google.dart.compiler.ast.DartForStatement; |
| 39 import com.google.dart.compiler.ast.DartFunction; | 39 import com.google.dart.compiler.ast.DartFunction; |
| 40 import com.google.dart.compiler.ast.DartFunctionExpression; | 40 import com.google.dart.compiler.ast.DartFunctionExpression; |
| 41 import com.google.dart.compiler.ast.DartFunctionObjectInvocation; | 41 import com.google.dart.compiler.ast.DartFunctionObjectInvocation; |
| 42 import com.google.dart.compiler.ast.DartFunctionTypeAlias; | 42 import com.google.dart.compiler.ast.DartFunctionTypeAlias; |
| 43 import com.google.dart.compiler.ast.DartIdentifier; | 43 import com.google.dart.compiler.ast.DartIdentifier; |
| 44 import com.google.dart.compiler.ast.DartIfStatement; | 44 import com.google.dart.compiler.ast.DartIfStatement; |
| 45 import com.google.dart.compiler.ast.DartImportDirective; | 45 import com.google.dart.compiler.ast.DartImportDirective; |
| 46 import com.google.dart.compiler.ast.DartInitializer; | 46 import com.google.dart.compiler.ast.DartInitializer; |
| 47 import com.google.dart.compiler.ast.DartIntegerLiteral; | 47 import com.google.dart.compiler.ast.DartIntegerLiteral; |
| 48 import com.google.dart.compiler.ast.DartInvocation; | |
| 49 import com.google.dart.compiler.ast.DartLabel; | 48 import com.google.dart.compiler.ast.DartLabel; |
| 50 import com.google.dart.compiler.ast.DartLibraryDirective; | 49 import com.google.dart.compiler.ast.DartLibraryDirective; |
| 51 import com.google.dart.compiler.ast.DartMapLiteral; | 50 import com.google.dart.compiler.ast.DartMapLiteral; |
| 52 import com.google.dart.compiler.ast.DartMapLiteralEntry; | 51 import com.google.dart.compiler.ast.DartMapLiteralEntry; |
| 53 import com.google.dart.compiler.ast.DartMethodDefinition; | 52 import com.google.dart.compiler.ast.DartMethodDefinition; |
| 54 import com.google.dart.compiler.ast.DartMethodInvocation; | 53 import com.google.dart.compiler.ast.DartMethodInvocation; |
| 55 import com.google.dart.compiler.ast.DartNamedExpression; | 54 import com.google.dart.compiler.ast.DartNamedExpression; |
| 56 import com.google.dart.compiler.ast.DartNativeBlock; | 55 import com.google.dart.compiler.ast.DartNativeBlock; |
| 57 import com.google.dart.compiler.ast.DartNativeDirective; | 56 import com.google.dart.compiler.ast.DartNativeDirective; |
| 58 import com.google.dart.compiler.ast.DartNewExpression; | 57 import com.google.dart.compiler.ast.DartNewExpression; |
| (...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 | 767 |
| 769 if (match(Token.VAR) || match(Token.FINAL)) { | 768 if (match(Token.VAR) || match(Token.FINAL)) { |
| 770 if (modifiers.isAbstract()) { | 769 if (modifiers.isAbstract()) { |
| 771 reportError(position(), ParserErrorCode.DISALLOWED_ABSTRACT_KEYWORD); | 770 reportError(position(), ParserErrorCode.DISALLOWED_ABSTRACT_KEYWORD); |
| 772 } else if (modifiers.isFactory()) { | 771 } else if (modifiers.isFactory()) { |
| 773 reportError(position(), ParserErrorCode.DISALLOWED_FACTORY_KEYWORD); | 772 reportError(position(), ParserErrorCode.DISALLOWED_FACTORY_KEYWORD); |
| 774 } | 773 } |
| 775 } | 774 } |
| 776 | 775 |
| 777 if (modifiers.isFactory()) { | 776 if (modifiers.isFactory()) { |
| 778 return done(parseFactory(modifiers)); | 777 // Factory is not allowed on top level. |
| 778 if (!allowStatic) { |
| 779 reportError(position(), ParserErrorCode.DISALLOWED_FACTORY_KEYWORD); |
| 780 modifiers = modifiers.removeFactory(); |
| 781 } |
| 782 // Do parse factory. |
| 783 DartMethodDefinition factoryNode = parseFactory(modifiers); |
| 784 // If factory is not allowed, ensure that it is valid as method. |
| 785 DartExpression actualName = factoryNode.getName(); |
| 786 if (!allowStatic && !(actualName instanceof DartIdentifier)) { |
| 787 DartExpression replacementName = new DartIdentifier(actualName.toString(
)); |
| 788 factoryNode.setName(replacementName); |
| 789 } |
| 790 // Done. |
| 791 return done(factoryNode); |
| 779 } | 792 } |
| 780 | 793 |
| 781 final DartNode member; | 794 final DartNode member; |
| 782 | 795 |
| 783 switch (peek(0)) { | 796 switch (peek(0)) { |
| 784 case VAR: { | 797 case VAR: { |
| 785 consume(Token.VAR); | 798 consume(Token.VAR); |
| 786 member = parseFieldDeclaration(modifiers, null); | 799 member = parseFieldDeclaration(modifiers, null); |
| 787 expectStatmentTerminator(); | 800 expectStatmentTerminator(); |
| 788 break; | 801 break; |
| (...skipping 2678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3467 } else { | 3480 } else { |
| 3468 ctx.error(dartError); | 3481 ctx.error(dartError); |
| 3469 errorHistory.add(dartError.hashCode()); | 3482 errorHistory.add(dartError.hashCode()); |
| 3470 } | 3483 } |
| 3471 } | 3484 } |
| 3472 | 3485 |
| 3473 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen
ts) { | 3486 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen
ts) { |
| 3474 reportError(new DartCompilationError(node, errorCode, arguments)); | 3487 reportError(new DartCompilationError(node, errorCode, arguments)); |
| 3475 } | 3488 } |
| 3476 } | 3489 } |
| OLD | NEW |