Merge branch 'master' into upsource-master

This commit is contained in:
Dmitry Lomov
2012-05-11 18:39:48 +02:00
176 changed files with 5272 additions and 937 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,6 @@ import org.jetbrains.annotations.PropertyKey;
import static com.intellij.lang.PsiBuilderUtil.expect;
import static com.intellij.lang.PsiBuilderUtil.nextTokenType;
import static com.intellij.lang.java.parser.JavaParserUtil.*;
import static com.intellij.lang.java.parser.JavaParserUtil.exprType;
public class DeclarationParser {
@@ -59,12 +58,6 @@ public class DeclarationParser {
myStatementParser = new StatementParser(this, myExpressionParser, myReferenceParser);
}
protected DeclarationParser(ReferenceParser referenceParser, ExpressionParser expressionParser, StatementParser statementParser) {
myReferenceParser = referenceParser;
myExpressionParser = expressionParser;
myStatementParser = statementParser;
}
public ReferenceParser getReferenceParser() {
return myReferenceParser;
}
@@ -184,7 +177,7 @@ public class DeclarationParser {
myExpressionParser.parseArgumentList(builder);
}
else {
JavaParserUtil.emptyElement(builder, JavaElementType.EXPRESSION_LIST);
emptyElement(builder, JavaElementType.EXPRESSION_LIST);
}
if (builder.getTokenType() == JavaTokenType.LBRACE) {
@@ -312,7 +305,7 @@ public class DeclarationParser {
}
idPos.rollbackTo();
if (typeParams == null) {
JavaParserUtil.emptyElement(builder, JavaElementType.TYPE_PARAMETER_LIST);
emptyElement(builder, JavaElementType.TYPE_PARAMETER_LIST);
}
builder.advanceLexer();
if (builder.getTokenType() != JavaTokenType.LPARENTH) {
@@ -371,7 +364,7 @@ public class DeclarationParser {
if (builder.getTokenType() == JavaTokenType.LPARENTH) {
if (context == Context.CLASS || context == Context.ANNOTATION_INTERFACE) { // method
if (typeParams == null) {
JavaParserUtil.emptyElement(type, JavaElementType.TYPE_PARAMETER_LIST);
emptyElement(type, JavaElementType.TYPE_PARAMETER_LIST);
}
return parseMethodFromLeftParenth(builder, declaration, (context == Context.ANNOTATION_INTERFACE), false);
}
@@ -608,7 +601,7 @@ public class DeclarationParser {
}
else {
error(builder, JavaErrorMessages.message("expected.type"));
JavaParserUtil.emptyElement(builder, JavaElementType.TYPE);
emptyElement(builder, JavaElementType.TYPE);
}
}
@@ -404,7 +404,7 @@ public class ExpressionParser {
final PsiBuilder.Marker refExpr = expr.precede();
myReferenceParser.parseReferenceParameterList(builder, false, false);
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.IDENTIFIER, "expected.identifier")) {
if (!expectOrError(builder, JavaTokenType.IDENTIFIER, "expected.identifier")) {
refExpr.done(JavaElementType.REFERENCE_EXPRESSION);
startMarker.drop();
return refExpr;
@@ -726,7 +726,7 @@ public class ExpressionParser {
}
bracketCount++;
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.RBRACKET, "expected.rbracket")) {
if (!expectOrError(builder, JavaTokenType.RBRACKET, "expected.rbracket")) {
newExpr.done(JavaElementType.NEW_EXPRESSION);
return newExpr;
}
@@ -812,7 +812,7 @@ public class ExpressionParser {
}
}
final boolean closed = JavaParserUtil.expectOrError(builder, JavaTokenType.RPARENTH, "expected.rparen");
final boolean closed = expectOrError(builder, JavaTokenType.RPARENTH, "expected.rparen");
list.done(JavaElementType.EXPRESSION_LIST);
if (!closed) {
@@ -822,7 +822,7 @@ public class ExpressionParser {
}
private static void emptyExpression(final PsiBuilder builder) {
JavaParserUtil.emptyElement(builder, JavaElementType.EMPTY_EXPRESSION);
emptyElement(builder, JavaElementType.EMPTY_EXPRESSION);
}
@Nullable
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -106,8 +106,8 @@ public class FileParser {
}
if (impListInfo.second && firstDeclarationOk == Boolean.TRUE) {
impListInfo.first.setCustomEdgeTokenBinders(JavaParserUtil.PRECEDING_COMMENT_BINDER, null); // pass comments behind fake import list
firstDeclaration.setCustomEdgeTokenBinders(JavaParserUtil.SPECIAL_PRECEDING_COMMENT_BINDER, null);
impListInfo.first.setCustomEdgeTokenBinders(PRECEDING_COMMENT_BINDER, null); // pass comments behind fake import list
firstDeclaration.setCustomEdgeTokenBinders(SPECIAL_PRECEDING_COMMENT_BINDER, null);
}
}
@@ -209,9 +209,7 @@ public class ReferenceParser {
typeInfo.isParameterized = parseReferenceParameterList(builder, true, diamonds);
}
else {
if (!isStaticImport || builder.getTokenType() == JavaTokenType.DOT) {
emptyElement(builder, JavaElementType.REFERENCE_PARAMETER_LIST);
}
emptyElement(builder, JavaElementType.REFERENCE_PARAMETER_LIST);
}
boolean hasIdentifier;
@@ -261,7 +259,7 @@ public class ReferenceParser {
if (parameterList) {
typeInfo.isParameterized = parseReferenceParameterList(builder, true, diamonds);
}
else if (!isStaticImport || builder.getTokenType() == JavaTokenType.DOT) {
else {
emptyElement(builder, JavaElementType.REFERENCE_PARAMETER_LIST);
}
}
@@ -122,7 +122,7 @@ public class ClsJavaCodeReferenceElementImpl extends ClsElementImpl implements P
int index = 0;
for (PsiTypeParameter parameter : PsiUtil.typeParametersIterable((PsiClass)resolve)) {
if (index >= myTypeParameters.length) {
substitutionMap.put(parameter, null);
if (parameter.getOwner() == resolve) substitutionMap.put(parameter, null);
}
else {
substitutionMap.put(parameter, myTypeParameters[index].getType());
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -65,25 +65,16 @@ public class PsiImportStaticReferenceElementImpl extends CompositePsiElement imp
@Override
public final ASTNode findChildByRole(int role) {
LOG.assertTrue(ChildRole.isUnique(role));
switch(role){
switch (role) {
default:
return null;
case ChildRole.REFERENCE_NAME:
if (getLastChildNode().getElementType() == JavaTokenType.IDENTIFIER){
return getLastChildNode();
}
else{
return null;
}
return findChildByType(JavaTokenType.IDENTIFIER);
case ChildRole.QUALIFIER:
if (getFirstChildNode().getElementType() == JavaElementType.JAVA_CODE_REFERENCE){
return getFirstChildNode();
}
else{
return null;
}
final TreeElement node = getFirstChildNode();
return node.getElementType() == JavaElementType.JAVA_CODE_REFERENCE ? node : null;
case ChildRole.DOT:
return findChildByType(JavaTokenType.DOT);