KT-1130 Remove ref from keywords

This commit is contained in:
Andrey Breslav
2012-01-25 12:46:50 +04:00
parent 4c4aafd2d3
commit 90b98a63b5
22 changed files with 92 additions and 152 deletions
@@ -197,7 +197,6 @@ public interface Errors {
SimpleDiagnosticFactory NAMESPACE_IS_NOT_AN_EXPRESSION = SimpleDiagnosticFactory.create(ERROR, "'namespace' is not an expression, it can only be used on the left-hand side of a dot ('.')");
ParameterizedDiagnosticFactory1<String> SUPER_IS_NOT_AN_EXPRESSION = ParameterizedDiagnosticFactory1.create(ERROR, "{0} is not an expression, it can only be used on the left-hand side of a dot ('.')");
SimpleDiagnosticFactory DECLARATION_IN_ILLEGAL_CONTEXT = SimpleDiagnosticFactory.create(ERROR, "Declarations are not allowed in this position");
SimpleDiagnosticFactory REF_SETTER_PARAMETER = SimpleDiagnosticFactory.create(ERROR, "Setter parameters can not be 'ref'");
SimpleDiagnosticFactory SETTER_PARAMETER_WITH_DEFAULT_VALUE = SimpleDiagnosticFactory.create(ERROR, "Setter parameters can not have default values");
SimpleDiagnosticFactory NO_THIS = SimpleDiagnosticFactory.create(ERROR, "'this' is not defined in this context");
SimpleDiagnosticFactory SUPER_NOT_AVAILABLE = SimpleDiagnosticFactory.create(ERROR, "No supertypes are accessible in this context");
@@ -290,7 +289,6 @@ public interface Errors {
ParameterizedDiagnosticFactory1<String> ILLEGAL_SELECTOR = ParameterizedDiagnosticFactory1.create(ERROR, "Expression ''{0}'' cannot be a selector (occur after a dot)");
SimpleDiagnosticFactory REF_PARAMETER_WITH_VAL_OR_VAR = SimpleDiagnosticFactory.create(ERROR, "'val' and 'var' are not allowed on ref-parameters");
SimpleDiagnosticFactory VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION = SimpleDiagnosticFactory.create(ERROR, "A type annotation is required on a value parameter");
SimpleDiagnosticFactory BREAK_OR_CONTINUE_OUTSIDE_A_LOOP = SimpleDiagnosticFactory.create(ERROR, "'break' and 'continue' are only allowed inside a loop");
ParameterizedDiagnosticFactory1<String> NOT_A_LOOP_LABEL = ParameterizedDiagnosticFactory1.create(ERROR, "The label ''{0}'' does not denote a loop");
@@ -1817,7 +1817,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
/*
* (SimpleName "=")? ("out" | "ref")? element
* (SimpleName "=")? element
*/
private void parseValueArgument() {
PsiBuilder.Marker argument = mark();
@@ -1829,7 +1829,6 @@ public class JetExpressionParsing extends AbstractJetParsing {
argName.done(VALUE_ARGUMENT_NAME);
advance(); // EQ
}
if (at(OUT_KEYWORD) || at(REF_KEYWORD)) advance(); // REF or OUT
parseExpression();
argument.done(VALUE_ARGUMENT);
}
@@ -1398,9 +1398,11 @@ public class JetParsing extends AbstractJetParsing {
while (true) {
PsiBuilder.Marker projection = mark();
TokenSet lookFor = TokenSet.create(IDENTIFIER);
TokenSet stopAt = TokenSet.create(COMMA, COLON, GT);
parseModifierListWithShortAnnotations(MODIFIER_LIST, lookFor, stopAt);
// TokenSet lookFor = TokenSet.create(IDENTIFIER);
// TokenSet stopAt = TokenSet.create(COMMA, COLON, GT);
// parseModifierListWithShortAnnotations(MODIFIER_LIST, lookFor, stopAt);
// Currently we do not allow annotations
parseModifierList(MODIFIER_LIST, false);
if (at(MUL)) {
advance(); // MUL
@@ -1429,7 +1431,7 @@ public class JetParsing extends AbstractJetParsing {
private void parseModifierListWithShortAnnotations(JetNodeType modifierList, TokenSet lookFor, TokenSet stopAt) {
int lastId = findLastBefore(lookFor, stopAt, false);
createTruncatedBuilder(lastId).parseModifierList(modifierList, false);
createTruncatedBuilder(lastId).parseModifierList(modifierList, true);
}
/*
@@ -44,19 +44,8 @@ public class JetParameter extends JetNamedDeclaration {
return null;
}
public boolean isRef() {
ASTNode refNode = getRefNode();
return refNode != null;
}
@Nullable
public ASTNode getRefNode() {
JetModifierList modifierList = getModifierList();
return modifierList == null ? null : modifierList.getModifierNode(JetTokens.REF_KEYWORD);
}
public boolean isMutable() {
return findChildByType(JetTokens.VAR_KEYWORD) != null || isRef();
return findChildByType(JetTokens.VAR_KEYWORD) != null;
}
public boolean isVarArg() {
@@ -5,7 +5,6 @@ import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
import org.jetbrains.jet.lexer.JetTokens;
/**
* @author max
@@ -41,16 +40,6 @@ public class JetValueArgument extends JetElement implements ValueArgument {
return getArgumentName() != null;
}
@Override
public boolean isOut() {
return findChildByType(JetTokens.OUT_KEYWORD) != null;
}
@Override
public boolean isRef() {
return findChildByType(JetTokens.REF_KEYWORD) != null;
}
@NotNull
@Override
public PsiElement asElement() {
@@ -17,10 +17,6 @@ public interface ValueArgument {
boolean isNamed();
boolean isOut();
boolean isRef();
@NotNull
PsiElement asElement();
@@ -10,7 +10,6 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.JetSemanticServices;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -229,12 +228,6 @@ public class DescriptorResolver {
JetParameter valueParameter = valueParameters.get(i);
JetTypeReference typeReference = valueParameter.getTypeReference();
ASTNode valOrVarNode = valueParameter.getValOrVarNode();
if (valueParameter.isRef() && valOrVarNode != null) {
// trace.getErrorHandler().genericError(valOrVarNode, "'val' and 'var' are not allowed on ref-parameters");
trace.report(REF_PARAMETER_WITH_VAL_OR_VAR.on(valOrVarNode));
}
JetType type;
if (typeReference == null) {
// trace.getErrorHandler().genericError(valueParameter.getNode(), "A type annotation is required on a value parameter");
@@ -653,15 +646,10 @@ public class DescriptorResolver {
resolveVisibilityFromModifiers(setter.getModifierList(), propertyDescriptor.getVisibility()),
setter.getBodyExpression() != null, false);
if (parameter != null) {
if (parameter.isRef()) {
// trace.getErrorHandler().genericError(parameter.getRefNode(), "Setter parameters can not be 'ref'");
trace.report(Errors.REF_SETTER_PARAMETER.on(parameter.getRefNode()));
}
// This check is redundant: the parser does not allow a default value, but we'll keep it just in case
JetExpression defaultValue = parameter.getDefaultValue();
if (defaultValue != null) {
// trace.getErrorHandler().genericError(defaultValue.getNode(), "Setter parameters can not have default values");
trace.report(SETTER_PARAMETER_WITH_DEFAULT_VALUE.on(defaultValue));
}
@@ -675,7 +663,6 @@ public class DescriptorResolver {
JetType inType = propertyDescriptor.getOutType();
if (inType != null) {
if (!TypeUtils.equalTypes(type, inType)) {
// trace.getErrorHandler().genericError(typeReference.getNode(), "Setter parameter type must be equal to the type of the property, i.e. " + inType);
trace.report(WRONG_SETTER_PARAMETER_TYPE.on(setter, typeReference, inType));
}
}
@@ -45,16 +45,6 @@ public class CallMaker {
return false;
}
@Override
public boolean isOut() {
return false;
}
@Override
public boolean isRef() {
return false;
}
@NotNull
@Override
public PsiElement asElement() {
@@ -143,9 +143,6 @@ public interface JetTokens {
JetKeywordToken FINALLY_KEYWORD = JetKeywordToken.softKeyword("finally");
JetKeywordToken FINAL_KEYWORD = JetKeywordToken.softKeyword("final");
// TODO: support this as an annotation on arguments. Then, they it probably can not be a soft keyword
JetKeywordToken REF_KEYWORD = JetKeywordToken.softKeyword("ref");
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, TRAIT_KEYWORD,
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
NULL_KEYWORD,
@@ -158,12 +155,12 @@ public interface JetTokens {
TokenSet SOFT_KEYWORDS = TokenSet.create(IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
SET_KEYWORD, ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ANNOTATION_KEYWORD,
OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD,
CATCH_KEYWORD, FINALLY_KEYWORD, REF_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, INLINE_KEYWORD, ERASED_KEYWORD
CATCH_KEYWORD, FINALLY_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, INLINE_KEYWORD, ERASED_KEYWORD
);
TokenSet MODIFIER_KEYWORDS = TokenSet.create(ABSTRACT_KEYWORD, ENUM_KEYWORD,
OPEN_KEYWORD, ANNOTATION_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD,
PROTECTED_KEYWORD, REF_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, INLINE_KEYWORD, ERASED_KEYWORD
PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, INLINE_KEYWORD, ERASED_KEYWORD
);
TokenSet WHITE_SPACE_OR_COMMENT_BIT_SET = TokenSet.create(WHITE_SPACE, BLOCK_COMMENT, EOL_COMMENT, DOC_COMMENT);
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);