diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 4483567250f..4364c1ed3b2 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -701,6 +701,8 @@ public class JetParsing extends AbstractJetParsing { * ; */ public JetNodeType parseProperty() { + // TODO: var foo : Int { get; private set } + assert at(VAL_KEYWORD) || at(VAR_KEYWORD); advance(); // VAL_KEYWORD or VAR_KEYWORD @@ -718,7 +720,8 @@ public class JetParsing extends AbstractJetParsing { }, new TokenStreamPredicate() { @Override public boolean matching(boolean topLevel) { - if (lookahead(1) == IDENTIFIER) { + if (topLevel && (at(EQ) || at(COLON))) return true; + if (topLevel && lookahead(1) == IDENTIFIER) { IElementType lookahead2 = lookahead(2); return lookahead2 != LT && lookahead2 != DOT; } diff --git a/idea/testData/psi/Properties.jet b/idea/testData/psi/Properties.jet index 5f2e76d22e6..e7ff0ab2829 100644 --- a/idea/testData/psi/Properties.jet +++ b/idea/testData/psi/Properties.jet @@ -1,3 +1,5 @@ +val foo = bar.foo.bar + val foo val [a] foo val foo.bar diff --git a/idea/testData/psi/Properties.txt b/idea/testData/psi/Properties.txt index 3367441a963..bb163679802 100644 --- a/idea/testData/psi/Properties.txt +++ b/idea/testData/psi/Properties.txt @@ -1,5 +1,20 @@ JetFile: Properties.jet NAMESPACE + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + BINARY_EXPRESSION + BINARY_EXPRESSION + PsiElement(IDENTIFIER)('bar') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace('\n\n') PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ')