Remove "This" keyword
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* The following code was generated by JFlex 1.4.3 on 11/27/15 4:10 PM */
|
||||
/* The following code was generated by JFlex 1.4.3 on 11/27/15 4:27 PM */
|
||||
|
||||
package org.jetbrains.kotlin.kdoc.lexer;
|
||||
|
||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag;
|
||||
/**
|
||||
* This class is a scanner generated by
|
||||
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
|
||||
* on 11/27/15 4:10 PM from the specification file
|
||||
* on 11/27/15 4:27 PM from the specification file
|
||||
* <tt>/Users/abreslav/work/kotlin/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex</tt>
|
||||
*/
|
||||
class _KDocLexer implements FlexLexer {
|
||||
|
||||
@@ -251,7 +251,6 @@ LONG_TEMPLATE_ENTRY_START=\$\{
|
||||
"this" { return KtTokens.THIS_KEYWORD ;}
|
||||
"null" { return KtTokens.NULL_KEYWORD ;}
|
||||
"else" { return KtTokens.ELSE_KEYWORD ;}
|
||||
"This" { return KtTokens.CAPITALIZED_THIS_KEYWORD ;}
|
||||
"try" { return KtTokens.TRY_KEYWORD ;}
|
||||
"val" { return KtTokens.VAL_KEYWORD ;}
|
||||
"var" { return KtTokens.VAR_KEYWORD ;}
|
||||
|
||||
@@ -76,9 +76,6 @@ public interface KtTokens {
|
||||
KtKeywordToken DO_KEYWORD = KtKeywordToken.keyword("do");
|
||||
KtKeywordToken WHEN_KEYWORD = KtKeywordToken.keyword("when");
|
||||
KtKeywordToken INTERFACE_KEYWORD = KtKeywordToken.keyword("interface");
|
||||
// TODO: Discuss "This" keyword
|
||||
KtKeywordToken CAPITALIZED_THIS_KEYWORD = KtKeywordToken.keyword("This");
|
||||
|
||||
|
||||
KtToken AS_SAFE = KtKeywordToken.keyword("AS_SAFE");//new KtToken("as?");
|
||||
|
||||
@@ -191,7 +188,7 @@ public interface KtTokens {
|
||||
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD,
|
||||
IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD,
|
||||
ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, TRY_KEYWORD, WHEN_KEYWORD,
|
||||
NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD, AS_SAFE
|
||||
NOT_IN, NOT_IS, AS_SAFE
|
||||
);
|
||||
|
||||
TokenSet SOFT_KEYWORDS = TokenSet.create(FILE_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -56,7 +56,7 @@ public class KotlinParsing extends AbstractKotlinParsing {
|
||||
private static final TokenSet PARAMETER_NAME_RECOVERY_SET = TokenSet.create(COLON, EQ, COMMA, RPAR);
|
||||
private static final TokenSet PACKAGE_NAME_RECOVERY_SET = TokenSet.create(DOT, EOL_OR_SEMICOLON);
|
||||
private static final TokenSet IMPORT_RECOVERY_SET = TokenSet.create(AS_KEYWORD, DOT, EOL_OR_SEMICOLON);
|
||||
/*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, LPAR, CAPITALIZED_THIS_KEYWORD, HASH, DYNAMIC_KEYWORD);
|
||||
/*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, LPAR, HASH, DYNAMIC_KEYWORD);
|
||||
private static final TokenSet RECEIVER_TYPE_TERMINATORS = TokenSet.create(DOT, SAFE_ACCESS);
|
||||
private static final TokenSet VALUE_PARAMETER_FIRST =
|
||||
TokenSet.orSet(TokenSet.create(IDENTIFIER, LBRACKET, VAL_KEYWORD, VAR_KEYWORD), MODIFIER_KEYWORDS);
|
||||
@@ -1867,9 +1867,6 @@ public class KotlinParsing extends AbstractKotlinParsing {
|
||||
}
|
||||
|
||||
}
|
||||
else if (at(CAPITALIZED_THIS_KEYWORD)) {
|
||||
parseSelfType();
|
||||
}
|
||||
else {
|
||||
errorWithRecovery("Type expected",
|
||||
TokenSet.orSet(TOP_LEVEL_DECLARATION_FIRST,
|
||||
@@ -2021,19 +2018,6 @@ public class KotlinParsing extends AbstractKotlinParsing {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* selfType
|
||||
* : "This"
|
||||
* ;
|
||||
*/
|
||||
private void parseSelfType() {
|
||||
assert _at(CAPITALIZED_THIS_KEYWORD);
|
||||
|
||||
PsiBuilder.Marker type = mark();
|
||||
advance(); // CAPITALIZED_THIS_KEYWORD
|
||||
type.done(SELF_TYPE);
|
||||
}
|
||||
|
||||
/*
|
||||
* (optionalProjection type){","}
|
||||
*/
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun foo(f: <!UNSUPPORTED!>This<!>) {}
|
||||
|
||||
interface C<T: C<<!UNSUPPORTED!>This<!>>> {
|
||||
val x: <!UNSUPPORTED!>This<!>
|
||||
val y: <!UNSUPPORTED!>This<!>?
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ f: [ERROR : This]): kotlin.Unit
|
||||
|
||||
public interface C</*0*/ T : C<[ERROR : This]>> {
|
||||
public abstract val x: [ERROR : This]
|
||||
public abstract val y: [ERROR : This]?
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
class Foo<T : List<This>>(a : This, b : bar<This>) : List<This> by foo as List<This> {
|
||||
fun foo(a : This) : This {
|
||||
val a : This = Foo<This>();
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
-155
@@ -1,155 +0,0 @@
|
||||
JetFile: ThisType.kt
|
||||
PACKAGE_DIRECTIVE
|
||||
<empty list>
|
||||
IMPORT_LIST
|
||||
<empty list>
|
||||
CLASS
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(IDENTIFIER)('Foo')
|
||||
TYPE_PARAMETER_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PARAMETER
|
||||
PsiElement(IDENTIFIER)('T')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('List')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(GT)('>')
|
||||
PsiElement(GT)('>')
|
||||
PRIMARY_CONSTRUCTOR
|
||||
VALUE_PARAMETER_LIST
|
||||
PsiElement(LPAR)('(')
|
||||
VALUE_PARAMETER
|
||||
PsiElement(IDENTIFIER)('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(COMMA)(',')
|
||||
PsiWhiteSpace(' ')
|
||||
VALUE_PARAMETER
|
||||
PsiElement(IDENTIFIER)('b')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('bar')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(GT)('>')
|
||||
PsiElement(RPAR)(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
DELEGATION_SPECIFIER_LIST
|
||||
DELEGATOR_BY
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('List')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(GT)('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(by)('by')
|
||||
PsiWhiteSpace(' ')
|
||||
BINARY_WITH_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('foo')
|
||||
PsiWhiteSpace(' ')
|
||||
OPERATION_REFERENCE
|
||||
PsiElement(as)('as')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('List')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(GT)('>')
|
||||
PsiWhiteSpace(' ')
|
||||
CLASS_BODY
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
FUN
|
||||
PsiElement(fun)('fun')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(IDENTIFIER)('foo')
|
||||
VALUE_PARAMETER_LIST
|
||||
PsiElement(LPAR)('(')
|
||||
VALUE_PARAMETER
|
||||
PsiElement(IDENTIFIER)('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(RPAR)(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
PROPERTY
|
||||
PsiElement(val)('val')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(IDENTIFIER)('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(EQ)('=')
|
||||
PsiWhiteSpace(' ')
|
||||
CALL_EXPRESSION
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('Foo')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
PsiElement(GT)('>')
|
||||
VALUE_ARGUMENT_LIST
|
||||
PsiElement(LPAR)('(')
|
||||
PsiElement(RPAR)(')')
|
||||
PsiElement(SEMICOLON)(';')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiElement(RBRACE)('}')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiElement(RBRACE)('}')
|
||||
+12
-8
@@ -536,8 +536,9 @@ JetFile: BitArith.kt
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('This')
|
||||
PsiElement(GT)('>')
|
||||
PsiWhiteSpace(' ')
|
||||
CLASS_BODY
|
||||
@@ -576,15 +577,17 @@ JetFile: BitArith.kt
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('This')
|
||||
PsiElement(RPAR)(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('This')
|
||||
PsiWhiteSpace('\n\n ')
|
||||
FUN
|
||||
MODIFIER_LIST
|
||||
@@ -615,8 +618,9 @@ JetFile: BitArith.kt
|
||||
PsiElement(COLON)(':')
|
||||
PsiWhiteSpace(' ')
|
||||
TYPE_REFERENCE
|
||||
SELF_TYPE
|
||||
PsiElement(This)('This')
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('This')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiComment(EOL_COMMENT)('// ...')
|
||||
PsiWhiteSpace('\n')
|
||||
|
||||
@@ -577,12 +577,6 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("SelfTypesUnsupported.kt")
|
||||
public void testSelfTypesUnsupported() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/SelfTypesUnsupported.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("Serializable.kt")
|
||||
public void testSerializable() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/Serializable.kt");
|
||||
|
||||
@@ -703,12 +703,6 @@ public class ParsingTestGenerated extends AbstractParsingTest {
|
||||
doParsingTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("ThisType.kt")
|
||||
public void testThisType() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/psi/ThisType.kt");
|
||||
doParsingTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("TraitConstructor.kt")
|
||||
public void testTraitConstructor() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/psi/TraitConstructor.kt");
|
||||
|
||||
@@ -51,7 +51,6 @@ public class KeywordStringsGenerated {
|
||||
"while",
|
||||
"do",
|
||||
"when",
|
||||
"interface",
|
||||
"This"
|
||||
"interface"
|
||||
));
|
||||
}
|
||||
|
||||
@@ -44,8 +44,7 @@ import org.jetbrains.kotlin.resolve.ModifierCheckerCore
|
||||
open class KeywordLookupObject
|
||||
|
||||
object KeywordCompletion {
|
||||
private val NON_ACTUAL_KEYWORDS = setOf(CAPITALIZED_THIS_KEYWORD,
|
||||
TYPE_ALIAS_KEYWORD)
|
||||
private val NON_ACTUAL_KEYWORDS = setOf(TYPE_ALIAS_KEYWORD)
|
||||
private val ALL_KEYWORDS = (KEYWORDS.getTypes() + SOFT_KEYWORDS.getTypes())
|
||||
.filter { it !in NON_ACTUAL_KEYWORDS }
|
||||
.map { it as KtKeywordToken }
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
//statement
|
||||
int as, type, val, var, fun, is, in, object, when, This;
|
||||
int as, type, val, var, fun, is, in, object, when;
|
||||
+1
-2
@@ -6,5 +6,4 @@ val `fun`: Int
|
||||
val `is`: Int
|
||||
val `in`: Int
|
||||
val `object`: Int
|
||||
val `when`: Int
|
||||
val `This`: Int
|
||||
val `when`: Int
|
||||
@@ -1,6 +1,6 @@
|
||||
//file
|
||||
package test;
|
||||
|
||||
import as.type.val.var.fun.is.in.object.when.This;
|
||||
import as.type.val.var.fun.is.in.object.when;
|
||||
|
||||
class Test {}
|
||||
@@ -1,6 +1,6 @@
|
||||
// ERROR: Unresolved reference: `as`
|
||||
package test
|
||||
|
||||
import `as`.type.`val`.`var`.`fun`.`is`.`in`.`object`.`when`.`This`
|
||||
import `as`.type.`val`.`var`.`fun`.`is`.`in`.`object`.`when`
|
||||
|
||||
internal class Test
|
||||
Reference in New Issue
Block a user