remove support for 'trait' keyword

This commit is contained in:
Dmitry Jemerov
2015-09-18 16:17:02 +02:00
parent 86833c1a74
commit 4ca434da54
217 changed files with 705 additions and 821 deletions
@@ -149,7 +149,6 @@ public interface Errors {
DiagnosticFactory0<JetDelegatorToSuperClass> SUPERTYPE_NOT_INITIALIZED = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<JetDelegatorToSuperClass> SUPERTYPE_NOT_INITIALIZED = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> DEPRECATED_TRAIT_KEYWORD = DiagnosticFactory0.create(WARNING);
DiagnosticFactory0<JetTypeReference> DELEGATION_NOT_TO_TRAIT = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<JetTypeReference> DELEGATION_NOT_TO_TRAIT = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<JetTypeReference> SUPERTYPE_NOT_A_CLASS_OR_TRAIT = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<JetTypeReference> SUPERTYPE_NOT_A_CLASS_OR_TRAIT = DiagnosticFactory0.create(ERROR);
@@ -280,7 +280,6 @@ public class DefaultErrorMessages {
MAP.put(DELEGATION_IN_TRAIT, "Interfaces cannot use delegation"); MAP.put(DELEGATION_IN_TRAIT, "Interfaces cannot use delegation");
MAP.put(DELEGATION_NOT_TO_TRAIT, "Only interfaces can be delegated to"); MAP.put(DELEGATION_NOT_TO_TRAIT, "Only interfaces can be delegated to");
MAP.put(DEPRECATED_TRAIT_KEYWORD, "'trait' keyword is deprecated, use 'interface' instead");
MAP.put(NO_CONSTRUCTOR, "This class does not have a constructor"); MAP.put(NO_CONSTRUCTOR, "This class does not have a constructor");
MAP.put(NOT_A_CLASS, "Not a class"); MAP.put(NOT_A_CLASS, "Not a class");
MAP.put(ILLEGAL_ESCAPE_SEQUENCE, "Illegal escape sequence"); MAP.put(ILLEGAL_ESCAPE_SEQUENCE, "Illegal escape sequence");
@@ -72,7 +72,6 @@ public interface JetTokens {
JetKeywordToken WHILE_KEYWORD = JetKeywordToken.keyword("while"); JetKeywordToken WHILE_KEYWORD = JetKeywordToken.keyword("while");
JetKeywordToken DO_KEYWORD = JetKeywordToken.keyword("do"); JetKeywordToken DO_KEYWORD = JetKeywordToken.keyword("do");
JetKeywordToken WHEN_KEYWORD = JetKeywordToken.keyword("when"); JetKeywordToken WHEN_KEYWORD = JetKeywordToken.keyword("when");
JetKeywordToken TRAIT_KEYWORD = JetKeywordToken.keyword("trait");
JetKeywordToken INTERFACE_KEYWORD = JetKeywordToken.keyword("interface"); JetKeywordToken INTERFACE_KEYWORD = JetKeywordToken.keyword("interface");
// TODO: Discuss "This" keyword // TODO: Discuss "This" keyword
JetKeywordToken CAPITALIZED_THIS_KEYWORD = JetKeywordToken.keyword("This"); JetKeywordToken CAPITALIZED_THIS_KEYWORD = JetKeywordToken.keyword("This");
@@ -178,7 +177,7 @@ public interface JetTokens {
JetModifierKeywordToken ANNOTATION_KEYWORD = JetModifierKeywordToken.softKeywordModifier("annotation"); JetModifierKeywordToken ANNOTATION_KEYWORD = JetModifierKeywordToken.softKeywordModifier("annotation");
JetModifierKeywordToken CROSSINLINE_KEYWORD = JetModifierKeywordToken.softKeywordModifier("crossinline"); JetModifierKeywordToken CROSSINLINE_KEYWORD = JetModifierKeywordToken.softKeywordModifier("crossinline");
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, TRAIT_KEYWORD, INTERFACE_KEYWORD, TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD,
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
NULL_KEYWORD, NULL_KEYWORD,
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD,
@@ -249,7 +249,6 @@ LONG_TEMPLATE_ENTRY_START=\$\{
"while" { return JetTokens.WHILE_KEYWORD ;} "while" { return JetTokens.WHILE_KEYWORD ;}
"break" { return JetTokens.BREAK_KEYWORD ;} "break" { return JetTokens.BREAK_KEYWORD ;}
"class" { return JetTokens.CLASS_KEYWORD ;} "class" { return JetTokens.CLASS_KEYWORD ;}
"trait" { return JetTokens.TRAIT_KEYWORD ;}
"throw" { return JetTokens.THROW_KEYWORD ;} "throw" { return JetTokens.THROW_KEYWORD ;}
"false" { return JetTokens.FALSE_KEYWORD ;} "false" { return JetTokens.FALSE_KEYWORD ;}
"super" { return JetTokens.SUPER_KEYWORD ;} "super" { return JetTokens.SUPER_KEYWORD ;}
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 4/29/15 4:44 PM */ /* The following code was generated by JFlex 1.4.3 on 9/18/15 3:17 PM */
package org.jetbrains.kotlin.lexer; package org.jetbrains.kotlin.lexer;
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.lexer.JetTokens;
/** /**
* This class is a scanner generated by * This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3 * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 4/29/15 4:44 PM from the specification file * on 9/18/15 3:17 PM from the specification file
* <tt>/Users/yole/jetbrains/kotlin/compiler/frontend/src/org/jetbrains/kotlin/lexer/Kotlin.flex</tt> * <tt>/Users/yole/jetbrains/kotlin/compiler/frontend/src/org/jetbrains/kotlin/lexer/Kotlin.flex</tt>
*/ */
class _JetLexer implements FlexLexer { class _JetLexer implements FlexLexer {
@@ -136,17 +136,16 @@ class _JetLexer implements FlexLexer {
"\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+ "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+
"\1\0\1\100\2\101\2\0\1\40\1\102\1\103\1\0"+ "\1\0\1\100\2\101\2\0\1\40\1\102\1\103\1\0"+
"\1\104\1\44\1\3\1\0\1\105\1\106\1\107\1\110"+ "\1\104\1\44\1\3\1\0\1\105\1\106\1\107\1\110"+
"\1\0\1\2\2\0\1\111\4\3\1\112\5\3\1\113"+ "\1\0\1\2\2\0\1\111\4\3\1\112\4\3\1\113"+
"\2\3\1\114\1\3\1\115\7\3\1\116\1\117\1\120"+ "\2\3\1\114\1\3\1\115\7\3\1\116\1\117\1\120"+
"\2\0\1\121\2\40\1\45\1\122\1\123\2\44\1\0"+ "\2\0\1\121\2\40\1\45\1\122\1\123\2\44\1\0"+
"\1\124\2\3\1\125\4\3\1\126\1\127\7\3\1\130"+ "\1\124\2\3\1\125\3\3\1\126\1\127\7\3\1\130"+
"\1\131\1\77\1\0\1\132\1\133\1\3\1\134\1\3"+ "\1\131\1\77\1\0\1\132\1\133\2\3\1\134\2\3"+
"\1\135\2\3\1\136\1\137\2\3\1\140\1\141\1\0"+ "\1\135\1\136\2\3\1\137\1\140\1\0\3\3\1\141"+
"\3\3\1\142\1\3\1\143\2\3\1\144\3\3\1\145"+ "\1\3\1\142\2\3\1\143\3\3\1\144\1\145\1\146";
"\1\146\1\147";
private static int [] zzUnpackAction() { private static int [] zzUnpackAction() {
int [] result = new int[240]; int [] result = new int[237];
int offset = 0; int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result; return result;
@@ -191,19 +190,19 @@ class _JetLexer implements FlexLexer {
"\0\u018c\0\u018c\0\u1944\0\u018c\0\u1986\0\u018c\0\u19c8\0\u1a0a"+ "\0\u018c\0\u018c\0\u1944\0\u018c\0\u1986\0\u018c\0\u19c8\0\u1a0a"+
"\0\u1a4c\0\u1a4c\0\u018c\0\u1a8e\0\u1ad0\0\u1b12\0\u1b54\0\u018c"+ "\0\u1a4c\0\u1a4c\0\u018c\0\u1a8e\0\u1ad0\0\u1b12\0\u1b54\0\u018c"+
"\0\u1b96\0\u1bd8\0\u1c1a\0\u1c5c\0\u0210\0\u1c9e\0\u1ce0\0\u1d22"+ "\0\u1b96\0\u1bd8\0\u1c1a\0\u1c5c\0\u0210\0\u1c9e\0\u1ce0\0\u1d22"+
"\0\u1d64\0\u1da6\0\u018c\0\u1de8\0\u1e2a\0\u0210\0\u1e6c\0\u0210"+ "\0\u1d64\0\u018c\0\u1da6\0\u1de8\0\u0210\0\u1e2a\0\u0210\0\u1e6c"+
"\0\u1eae\0\u1ef0\0\u1f32\0\u1f74\0\u1fb6\0\u1ff8\0\u203a\0\u0210"+ "\0\u1eae\0\u1ef0\0\u1f32\0\u1f74\0\u1fb6\0\u1ff8\0\u0210\0\u0210"+
"\0\u0210\0\u018c\0\u207c\0\u20be\0\u187e\0\u018c\0\u2100\0\u018c"+ "\0\u018c\0\u203a\0\u207c\0\u187e\0\u018c\0\u20be\0\u018c\0\u018c"+
"\0\u018c\0\u018c\0\u2142\0\u2184\0\u2184\0\u0210\0\u21c6\0\u2208"+ "\0\u018c\0\u2100\0\u2142\0\u2142\0\u0210\0\u2184\0\u21c6\0\u0210"+
"\0\u0210\0\u224a\0\u228c\0\u22ce\0\u2310\0\u0210\0\u0210\0\u2352"+ "\0\u2208\0\u224a\0\u228c\0\u0210\0\u0210\0\u22ce\0\u2310\0\u2352"+
"\0\u2394\0\u23d6\0\u2418\0\u245a\0\u249c\0\u24de\0\u0210\0\u0210"+ "\0\u2394\0\u23d6\0\u2418\0\u245a\0\u0210\0\u0210\0\u018c\0\u249c"+
"\0\u018c\0\u2520\0\u0ca2\0\u0210\0\u2562\0\u0210\0\u25a4\0\u0210"+ "\0\u0ca2\0\u0210\0\u24de\0\u2520\0\u0210\0\u2562\0\u25a4\0\u0210"+
"\0\u25e6\0\u2628\0\u0210\0\u0210\0\u266a\0\u26ac\0\u0210\0\u0210"+ "\0\u0210\0\u25e6\0\u2628\0\u0210\0\u0210\0\u266a\0\u26ac\0\u26ee"+
"\0\u26ee\0\u2730\0\u2772\0\u27b4\0\u0210\0\u27f6\0\u0210\0\u2838"+ "\0\u2730\0\u0210\0\u2772\0\u0210\0\u27b4\0\u27f6\0\u0210\0\u2838"+
"\0\u287a\0\u0210\0\u28bc\0\u28fe\0\u2940\0\u0210\0\u0210\0\u0210"; "\0\u287a\0\u28bc\0\u0210\0\u0210\0\u0210";
private static int [] zzUnpackRowMap() { private static int [] zzUnpackRowMap() {
int [] result = new int[240]; int [] result = new int[237];
int offset = 0; int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result; return result;
@@ -330,181 +329,177 @@ class _JetLexer implements FlexLexer {
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\1\11\1\233\20\11\21\0\2\11"+ "\2\0\4\11\2\0\1\11\1\233\20\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\234\2\0\4\11\2\0\1\235\2\11\1\236"+ "\2\0\1\234\2\0\4\11\2\0\1\235\21\11\21\0"+
"\16\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+ "\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\1\237\3\11"+ "\1\11\2\0\1\11\2\0\1\236\3\11\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\1\11"+
"\1\237\20\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\10\11\1\240\11\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\3\11\1\241\2\0\22\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\22\11\1\0\1\242\17\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\4\11\1\243"+
"\15\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\1\244\3\11"+
"\2\0\22\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\2\0\22\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\1\11\1\240\20\11\21\0\2\11\1\0\2\11"+ "\2\0\5\11\1\245\14\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\10\11\1\241\11\11\21\0\2\11"+ "\2\0\4\11\2\0\4\11\1\246\15\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\3\11\1\242\2\0\22\11\21\0"+ "\2\0\1\11\2\0\4\11\2\0\6\11\1\247\13\11"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\22\11\1\0"+
"\1\243\17\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\4\11\1\244\15\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\1\245\3\11\2\0\22\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\5\11\1\246\14\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\4\11\1\247\15\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\6\11"+ "\1\0\1\11\2\0\1\11\2\0\4\11\2\0\3\11"+
"\1\250\13\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\1\250\16\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\3\11\1\251\16\11\21\0\2\11\1\0\2\11"+ "\2\0\5\11\1\251\14\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\5\11\1\252\14\11\21\0\2\11"+ "\2\0\4\11\2\0\15\11\1\252\4\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\15\11\1\253\4\11"+ "\2\0\1\11\2\0\4\11\2\0\2\11\1\253\17\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\2\11\1\254\1\11"+
"\2\0\2\11\1\255\17\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\2\11\1\256\1\11\2\0\22\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\4\11\1\257\1\11"+
"\1\260\13\11\102\0\1\261\20\0\2\201\1\0\2\201"+
"\6\0\4\201\1\0\2\201\1\0\1\201\2\0\1\201"+
"\2\0\4\201\2\0\22\201\20\0\6\262\2\0\72\262"+
"\1\0\2\263\11\0\1\263\1\0\1\263\2\0\2\263"+
"\17\0\2\263\3\0\2\263\3\0\1\263\4\0\1\263"+
"\50\0\1\264\51\0\6\207\1\265\1\0\72\207\1\0"+
"\2\77\1\0\2\77\6\0\4\77\1\0\2\77\1\0"+
"\1\77\2\0\1\77\2\0\2\77\1\266\1\77\2\0"+
"\22\77\40\0\1\214\62\0\1\215\12\0\1\215\4\0"+
"\1\111\25\0\1\111\32\0\6\217\1\267\1\0\72\217"+
"\11\0\1\270\71\0\2\271\1\0\2\271\6\0\4\271"+
"\1\0\2\271\1\0\1\271\2\0\1\271\2\0\4\271"+
"\2\0\22\271\21\0\1\127\12\0\1\127\105\0\1\213"+
"\3\0\1\227\14\0\1\227\41\0\2\272\11\0\1\272"+
"\1\0\1\272\1\0\1\214\2\272\17\0\2\272\3\0"+
"\2\272\3\0\1\272\4\0\1\272\21\0\1\273\12\0"+
"\1\273\6\0\1\274\40\0\1\274\16\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\3\11\1\275\2\0\22\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\11\11\1\276\10\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\2\11"+ "\1\0\1\11\2\0\1\11\2\0\4\11\2\0\2\11"+
"\1\254\17\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\1\277\17\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\2\11"+
"\1\255\1\11\2\0\2\11\1\256\17\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\2\11\1\257\1\11\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\4\11"+
"\1\260\1\11\1\261\13\11\102\0\1\262\20\0\2\201"+
"\1\0\2\201\6\0\4\201\1\0\2\201\1\0\1\201"+
"\2\0\1\201\2\0\4\201\2\0\22\201\20\0\6\263"+
"\2\0\72\263\1\0\2\264\11\0\1\264\1\0\1\264"+
"\2\0\2\264\17\0\2\264\3\0\2\264\3\0\1\264"+
"\4\0\1\264\50\0\1\265\51\0\6\207\1\266\1\0"+
"\72\207\1\0\2\77\1\0\2\77\6\0\4\77\1\0"+
"\2\77\1\0\1\77\2\0\1\77\2\0\2\77\1\267"+
"\1\77\2\0\22\77\40\0\1\214\62\0\1\215\12\0"+
"\1\215\4\0\1\111\25\0\1\111\32\0\6\217\1\270"+
"\1\0\72\217\11\0\1\271\71\0\2\272\1\0\2\272"+
"\6\0\4\272\1\0\2\272\1\0\1\272\2\0\1\272"+
"\2\0\4\272\2\0\22\272\21\0\1\127\12\0\1\127"+
"\105\0\1\213\3\0\1\227\14\0\1\227\41\0\2\273"+
"\11\0\1\273\1\0\1\273\1\0\1\214\2\273\17\0"+
"\2\273\3\0\2\273\3\0\1\273\4\0\1\273\21\0"+
"\1\274\12\0\1\274\6\0\1\275\40\0\1\275\16\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\3\11\1\276\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\11\11"+
"\1\277\10\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\2\11\1\300\17\11\21\0\2\11\1\0\2\11"+ "\2\0\2\11\1\300\17\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\2\11\1\301\17\11\21\0\2\11"+ "\2\0\4\11\2\0\2\11\1\301\17\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\2\11\1\302\1\11\2\0\22\11"+ "\2\0\1\11\2\0\4\11\2\0\2\11\1\302\17\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\2\11"+ "\1\0\1\11\2\0\1\11\2\0\4\11\2\0\12\11"+
"\1\303\17\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\1\303\7\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\2\11\1\304\17\11\21\0\2\11\1\0\2\11"+ "\2\0\2\11\1\304\17\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\12\11\1\305\7\11\21\0\2\11"+ "\2\0\4\11\2\0\4\11\1\305\15\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\2\11\1\306\17\11"+ "\2\0\1\306\2\0\4\11\2\0\22\11\21\0\2\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\4\11"+ "\2\0\1\11\2\0\3\11\1\307\2\0\22\11\21\0"+
"\1\307\15\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\310\2\0\4\11"+
"\2\0\22\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\3\11"+
"\1\311\2\0\22\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\3\11\1\312\2\0\22\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\1\313\3\11\2\0\22\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\2\11\1\314\17\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+ "\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\3\11\1\315"+ "\1\11\2\0\1\11\2\0\3\11\1\310\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\1\311\3\11\2\0"+
"\22\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\2\11\1\312\17\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\3\11\1\313\16\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\4\11\1\314\15\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\5\11\1\315"+
"\14\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\3\11\1\316"+
"\2\0\22\11\20\0\6\262\1\317\1\0\72\262\1\0"+
"\2\320\11\0\1\320\1\0\1\320\2\0\2\320\17\0"+
"\2\320\3\0\2\320\3\0\1\320\4\0\1\320\21\0"+
"\2\77\1\0\2\77\6\0\4\77\1\0\2\77\1\0"+
"\1\77\2\0\1\77\2\0\3\77\1\321\2\0\22\77"+
"\21\0\2\272\11\0\1\272\1\0\1\272\2\0\2\272"+
"\1\0\1\227\14\0\1\227\2\272\3\0\2\272\3\0"+
"\1\272\4\0\1\272\21\0\1\273\12\0\1\273\66\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\16\11\1\322"+
"\3\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\3\11\1\323\16\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\6\11\1\324\13\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\6\11\1\325\13\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\3\11\1\326"+
"\16\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+ "\16\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+ "\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\4\11\1\316\15\11\21\0\2\11\1\0\2\11\6\0"+ "\6\11\1\327\13\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+ "\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\5\11\1\317\14\11\21\0\2\11\1\0"+ "\4\11\2\0\2\11\1\330\17\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+ "\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\3\11\1\320\2\0\22\11\20\0\6\263"+ "\1\11\2\0\3\11\1\331\2\0\22\11\21\0\2\11"+
"\1\321\1\0\72\263\1\0\2\322\11\0\1\322\1\0"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\1\322\2\0\2\322\17\0\2\322\3\0\2\322\3\0"+ "\2\0\1\11\2\0\2\11\1\332\1\11\2\0\22\11"+
"\1\322\4\0\1\322\21\0\2\77\1\0\2\77\6\0"+
"\4\77\1\0\2\77\1\0\1\77\2\0\1\77\2\0"+
"\3\77\1\323\2\0\22\77\21\0\2\273\11\0\1\273"+
"\1\0\1\273\2\0\2\273\1\0\1\227\14\0\1\227"+
"\2\273\3\0\2\273\3\0\1\273\4\0\1\273\21\0"+
"\1\274\12\0\1\274\66\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\16\11\1\324\3\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\3\11\1\325\16\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\1\326\3\11\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\6\11"+ "\1\0\1\11\2\0\1\11\2\0\4\11\2\0\10\11"+
"\1\327\13\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\1\333\11\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\6\11\1\330\13\11\21\0\2\11\1\0\2\11"+ "\2\0\12\11\1\334\7\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\3\11\1\331\16\11\21\0\2\11"+ "\2\0\4\11\2\0\2\11\1\335\17\11\21\0\2\336"+
"\11\0\1\336\1\0\1\336\2\0\2\336\17\0\2\336"+
"\3\0\2\336\3\0\1\336\4\0\1\336\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\6\11\1\332\13\11"+ "\2\0\1\11\2\0\4\11\2\0\4\11\1\337\15\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\2\11"+ "\1\0\1\11\2\0\1\11\2\0\4\11\2\0\7\11"+
"\1\333\17\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\1\340\12\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\3\11"+
"\1\334\2\0\22\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\2\11\1\335\1\11\2\0\22\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\10\11\1\336\11\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\12\11\1\337"+
"\7\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\2\11\1\340\17\11\21\0\2\341\11\0\1\341\1\0"+
"\1\341\2\0\2\341\17\0\2\341\3\0\2\341\3\0"+
"\1\341\4\0\1\341\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\4\11\1\342\15\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\7\11\1\343\12\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\13\11\1\344"+
"\6\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\5\11\1\345\14\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\5\11\1\346\14\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\1\347\3\11\2\0\22\11\21\0\2\204"+
"\11\0\1\204\1\0\1\204\2\0\2\204\17\0\2\204"+
"\3\0\2\204\3\0\1\204\4\0\1\204\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\2\11\1\350\1\11\2\0\22\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\3\11"+
"\1\351\16\11\21\0\2\11\1\0\2\11\6\0\4\11"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+ "\1\0\2\11\1\0\1\11\2\0\1\11\2\0\4\11"+
"\2\0\2\11\1\352\17\11\21\0\2\11\1\0\2\11"+ "\2\0\13\11\1\341\6\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\353"+
"\2\0\4\11\2\0\22\11\21\0\2\11\1\0\2\11"+
"\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+ "\6\0\4\11\1\0\2\11\1\0\1\11\2\0\1\11"+
"\2\0\4\11\2\0\3\11\1\354\16\11\21\0\2\11"+ "\2\0\4\11\2\0\5\11\1\342\14\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+ "\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\10\11\1\355\11\11"+ "\2\0\1\11\2\0\4\11\2\0\5\11\1\343\14\11"+
"\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+ "\21\0\2\11\1\0\2\11\6\0\4\11\1\0\2\11"+
"\1\0\1\11\2\0\1\11\2\0\4\11\2\0\2\11"+ "\1\0\1\11\2\0\1\11\2\0\1\344\3\11\2\0"+
"\1\356\17\11\21\0\2\11\1\0\2\11\6\0\4\11"+ "\22\11\21\0\2\204\11\0\1\204\1\0\1\204\2\0"+
"\1\0\2\11\1\0\1\11\2\0\1\11\2\0\3\11"+ "\2\204\17\0\2\204\3\0\2\204\3\0\1\204\4\0"+
"\1\357\2\0\22\11\21\0\2\11\1\0\2\11\6\0"+ "\1\204\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\2\11\1\345"+
"\1\11\2\0\22\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+ "\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\2\11\1\360\17\11\20\0"; "\4\11\2\0\3\11\1\346\16\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\4\11\2\0\2\11\1\347\17\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\350\2\0\4\11\2\0\22\11\21\0"+
"\2\11\1\0\2\11\6\0\4\11\1\0\2\11\1\0"+
"\1\11\2\0\1\11\2\0\4\11\2\0\3\11\1\351"+
"\16\11\21\0\2\11\1\0\2\11\6\0\4\11\1\0"+
"\2\11\1\0\1\11\2\0\1\11\2\0\4\11\2\0"+
"\10\11\1\352\11\11\21\0\2\11\1\0\2\11\6\0"+
"\4\11\1\0\2\11\1\0\1\11\2\0\1\11\2\0"+
"\4\11\2\0\2\11\1\353\17\11\21\0\2\11\1\0"+
"\2\11\6\0\4\11\1\0\2\11\1\0\1\11\2\0"+
"\1\11\2\0\3\11\1\354\2\0\22\11\21\0\2\11"+
"\1\0\2\11\6\0\4\11\1\0\2\11\1\0\1\11"+
"\2\0\1\11\2\0\4\11\2\0\2\11\1\355\17\11"+
"\20\0";
private static int [] zzUnpackTrans() { private static int [] zzUnpackTrans() {
int [] result = new int[10626]; int [] result = new int[10494];
int offset = 0; int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result; return result;
@@ -552,12 +547,12 @@ class _JetLexer implements FlexLexer {
"\5\11\1\1\1\0\7\1\1\11\21\1\11\11\1\1"+ "\5\11\1\1\1\0\7\1\1\11\21\1\11\11\1\1"+
"\1\0\2\11\1\1\2\0\1\1\2\11\1\0\1\11"+ "\1\0\2\11\1\1\2\0\1\1\2\11\1\0\1\11"+
"\1\1\1\11\1\0\3\1\1\11\1\0\1\1\2\0"+ "\1\1\1\11\1\0\3\1\1\11\1\0\1\1\2\0"+
"\1\11\12\1\1\11\16\1\1\11\2\0\1\1\1\11"+ "\1\11\11\1\1\11\16\1\1\11\2\0\1\1\1\11"+
"\1\1\3\11\2\1\1\0\23\1\1\11\1\0\16\1"+ "\1\1\3\11\2\1\1\0\22\1\1\11\1\0\15\1"+
"\1\0\17\1"; "\1\0\17\1";
private static int [] zzUnpackAttribute() { private static int [] zzUnpackAttribute() {
int [] result = new int[240]; int [] result = new int[237];
int offset = 0; int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result; return result;
@@ -904,34 +899,34 @@ class _JetLexer implements FlexLexer {
zzMarkedPos = zzMarkedPosL; zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 102: case 101:
{ return JetTokens.TYPE_ALIAS_KEYWORD ; { return JetTokens.TYPE_ALIAS_KEYWORD ;
} }
case 104: break; case 103: break;
case 3: case 3:
{ return JetTokens.IDENTIFIER; { return JetTokens.IDENTIFIER;
} }
case 105: break; case 104: break;
case 11: case 11:
{ pushState(STRING); return JetTokens.OPEN_QUOTE; { pushState(STRING); return JetTokens.OPEN_QUOTE;
} }
case 106: break; case 105: break;
case 77: case 77:
{ return JetTokens.FOR_KEYWORD ; { return JetTokens.FOR_KEYWORD ;
} }
case 107: break; case 106: break;
case 98: case 97:
{ return JetTokens.RETURN_KEYWORD ; { return JetTokens.RETURN_KEYWORD ;
} }
case 108: break; case 107: break;
case 103: case 102:
{ return JetTokens.INTERFACE_KEYWORD ; { return JetTokens.INTERFACE_KEYWORD ;
} }
case 109: break; case 108: break;
case 87: case 87:
{ return JetTokens.NULL_KEYWORD ; { return JetTokens.NULL_KEYWORD ;
} }
case 110: break; case 109: break;
case 35: case 35:
{ if (lBraceCount == 0) { { if (lBraceCount == 0) {
popState(); popState();
@@ -940,155 +935,155 @@ class _JetLexer implements FlexLexer {
lBraceCount--; lBraceCount--;
return JetTokens.RBRACE; return JetTokens.RBRACE;
} }
case 111: break; case 110: break;
case 18: case 18:
{ return JetTokens.LT ; { return JetTokens.LT ;
} }
case 112: break; case 111: break;
case 52: case 52:
{ return JetTokens.DO_KEYWORD ; { return JetTokens.DO_KEYWORD ;
} }
case 113: break; case 112: break;
case 17: case 17:
{ return JetTokens.PLUS ; { return JetTokens.PLUS ;
} }
case 114: break; case 113: break;
case 55: case 55:
{ return JetTokens.PLUSEQ ; { return JetTokens.PLUSEQ ;
} }
case 115: break; case 114: break;
case 90: case 90:
{ popState(); return JetTokens.THIS_KEYWORD; { popState(); return JetTokens.THIS_KEYWORD;
} }
case 116: break; case 115: break;
case 27: case 27:
{ return JetTokens.COMMA ; { return JetTokens.COMMA ;
} }
case 117: break; case 116: break;
case 19: case 19:
{ return JetTokens.GT ; { return JetTokens.GT ;
} }
case 118: break; case 117: break;
case 4: case 4:
{ return JetTokens.WHITE_SPACE; { return JetTokens.WHITE_SPACE;
} }
case 119: break; case 118: break;
case 25: case 25:
{ return JetTokens.RPAR ; { return JetTokens.RPAR ;
} }
case 120: break; case 119: break;
case 54: case 54:
{ return JetTokens.DOUBLE_ARROW; { return JetTokens.DOUBLE_ARROW;
} }
case 121: break; case 120: break;
case 85: case 85:
{ return JetTokens.TRUE_KEYWORD ; { return JetTokens.TRUE_KEYWORD ;
} }
case 122: break; case 121: break;
case 37: case 37:
{ return JetTokens.FIELD_IDENTIFIER; { return JetTokens.FIELD_IDENTIFIER;
} }
case 123: break; case 122: break;
case 59: case 59:
{ return JetTokens.ANDAND ; { return JetTokens.ANDAND ;
} }
case 124: break; case 123: break;
case 64: case 64:
{ pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START;
} }
case 125: break; case 124: break;
case 36: case 36:
{ return JetTokens.FLOAT_LITERAL; { return JetTokens.FLOAT_LITERAL;
} }
case 126: break; case 125: break;
case 38: case 38:
{ return JetTokens.EOL_COMMENT; { return JetTokens.EOL_COMMENT;
} }
case 127: break; case 126: break;
case 88: case 88:
{ return JetTokens.WHEN_KEYWORD ; { return JetTokens.WHEN_KEYWORD ;
} }
case 128: break; case 127: break;
case 73: case 73:
{ pushState(RAW_STRING); return JetTokens.OPEN_QUOTE; { pushState(RAW_STRING); return JetTokens.OPEN_QUOTE;
} }
case 129: break; case 128: break;
case 21: case 21:
{ return JetTokens.COLON ; { return JetTokens.COLON ;
} }
case 130: break; case 129: break;
case 57: case 57:
{ return JetTokens.LTEQ ; { return JetTokens.LTEQ ;
} }
case 131: break; case 130: break;
case 46: case 46:
{ return JetTokens.ARROW ; { return JetTokens.ARROW ;
} }
case 132: break; case 131: break;
case 32: case 32:
{ popState(); return JetTokens.IDENTIFIER; { popState(); return JetTokens.IDENTIFIER;
} }
case 133: break; case 132: break;
case 22: case 22:
{ return JetTokens.LBRACKET ; { return JetTokens.LBRACKET ;
} }
case 134: break; case 133: break;
case 68: case 68:
{ yypushback(2); return JetTokens.INTEGER_LITERAL; { yypushback(2); return JetTokens.INTEGER_LITERAL;
} }
case 135: break; case 134: break;
case 10: case 10:
{ return JetTokens.CHARACTER_LITERAL; { return JetTokens.CHARACTER_LITERAL;
} }
case 136: break; case 135: break;
case 79: case 79:
{ return JetTokens.VAR_KEYWORD ; { return JetTokens.VAR_KEYWORD ;
} }
case 137: break; case 136: break;
case 58: case 58:
{ return JetTokens.GTEQ ; { return JetTokens.GTEQ ;
} }
case 138: break; case 137: break;
case 2: case 2:
{ return JetTokens.INTEGER_LITERAL; { return JetTokens.INTEGER_LITERAL;
} }
case 139: break; case 138: break;
case 13: case 13:
{ return JetTokens.RBRACE ; { return JetTokens.RBRACE ;
} }
case 140: break; case 139: break;
case 95: case 94:
{ return JetTokens.CLASS_KEYWORD ; { return JetTokens.CLASS_KEYWORD ;
} }
case 141: break; case 140: break;
case 74: case 74:
{ return JetTokens.TRY_KEYWORD ; { return JetTokens.TRY_KEYWORD ;
} }
case 142: break; case 141: break;
case 7: case 7:
{ return JetTokens.EXCL ; { return JetTokens.EXCL ;
} }
case 143: break; case 142: break;
case 42: case 42:
{ return JetTokens.EXCLEQ ; { return JetTokens.EXCLEQ ;
} }
case 144: break; case 143: break;
case 45: case 45:
{ return JetTokens.MINUSEQ ; { return JetTokens.MINUSEQ ;
} }
case 145: break; case 144: break;
case 100: case 99:
{ return JetTokens.PACKAGE_KEYWORD ; { return JetTokens.PACKAGE_KEYWORD ;
} }
case 146: break; case 145: break;
case 91: case 91:
{ return JetTokens.THROW_KEYWORD ; { return JetTokens.THROW_KEYWORD ;
} }
case 147: break; case 146: break;
case 93: case 92:
{ return JetTokens.SUPER_KEYWORD ; { return JetTokens.SUPER_KEYWORD ;
} }
case 148: break; case 147: break;
case 67: case 67:
{ if (commentDepth > 0) { { if (commentDepth > 0) {
commentDepth--; commentDepth--;
@@ -1100,27 +1095,27 @@ class _JetLexer implements FlexLexer {
return commentStateToTokenType(state); return commentStateToTokenType(state);
} }
} }
case 149: break; case 148: break;
case 97: case 96:
{ return JetTokens.WHILE_KEYWORD ; { return JetTokens.WHILE_KEYWORD ;
} }
case 150: break; case 149: break;
case 44: case 44:
{ return JetTokens.MINUSMINUS; { return JetTokens.MINUSMINUS;
} }
case 151: break; case 150: break;
case 101: case 100:
{ return JetTokens.CONTINUE_KEYWORD ; { return JetTokens.CONTINUE_KEYWORD ;
} }
case 152: break; case 151: break;
case 71: case 71:
{ return JetTokens.NOT_IN; { return JetTokens.NOT_IN;
} }
case 153: break; case 152: break;
case 5: case 5:
{ return JetTokens.DIV ; { return JetTokens.DIV ;
} }
case 154: break; case 153: break;
case 81: case 81:
{ int length = yytext().length(); { int length = yytext().length();
if (length <= 3) { // closing """ if (length <= 3) { // closing """
@@ -1132,181 +1127,181 @@ class _JetLexer implements FlexLexer {
return JetTokens.REGULAR_STRING_PART; return JetTokens.REGULAR_STRING_PART;
} }
} }
case 155: break; case 154: break;
case 29: case 29:
{ return JetTokens.REGULAR_STRING_PART; { return JetTokens.REGULAR_STRING_PART;
} }
case 156: break; case 155: break;
case 16: case 16:
{ return JetTokens.QUEST ; { return JetTokens.QUEST ;
} }
case 157: break; case 156: break;
case 69: case 69:
{ pushState(DOC_COMMENT); { pushState(DOC_COMMENT);
commentDepth = 0; commentDepth = 0;
commentStart = getTokenStart(); commentStart = getTokenStart();
} }
case 158: break; case 157: break;
case 60: case 60:
{ return JetTokens.OROR ; { return JetTokens.OROR ;
} }
case 159: break; case 158: break;
case 20: case 20:
{ return JetTokens.PERC ; { return JetTokens.PERC ;
} }
case 160: break; case 159: break;
case 72: case 72:
{ return JetTokens.EXCLEQEQEQ; { return JetTokens.EXCLEQEQEQ;
} }
case 161: break; case 160: break;
case 61: case 61:
{ return JetTokens.PERCEQ ; { return JetTokens.PERCEQ ;
} }
case 162: break; case 161: break;
case 43: case 43:
{ return JetTokens.RANGE ; { return JetTokens.RANGE ;
} }
case 163: break; case 162: break;
case 1: case 1:
{ return TokenType.BAD_CHARACTER; { return TokenType.BAD_CHARACTER;
} }
case 164: break; case 163: break;
case 63: case 63:
{ pushState(SHORT_TEMPLATE_ENTRY); { pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1); yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START; return JetTokens.SHORT_TEMPLATE_ENTRY_START;
} }
case 165: break; case 164: break;
case 70: case 70:
{ return JetTokens.NOT_IS; { return JetTokens.NOT_IS;
} }
case 166: break; case 165: break;
case 14: case 14:
{ return JetTokens.MUL ; { return JetTokens.MUL ;
} }
case 167: break; case 166: break;
case 23: case 23:
{ return JetTokens.RBRACKET ; { return JetTokens.RBRACKET ;
} }
case 168: break; case 167: break;
case 56: case 56:
{ return JetTokens.PLUSPLUS ; { return JetTokens.PLUSPLUS ;
} }
case 169: break; case 168: break;
case 39: case 39:
{ pushState(BLOCK_COMMENT); { pushState(BLOCK_COMMENT);
commentDepth = 0; commentDepth = 0;
commentStart = getTokenStart(); commentStart = getTokenStart();
} }
case 170: break; case 169: break;
case 84: case 84:
{ return JetTokens.THIS_KEYWORD ; { return JetTokens.THIS_KEYWORD ;
} }
case 171: break; case 170: break;
case 8: case 8:
{ return JetTokens.DOT ; { return JetTokens.DOT ;
} }
case 172: break; case 171: break;
case 26: case 26:
{ return JetTokens.SEMICOLON ; { return JetTokens.SEMICOLON ;
} }
case 173: break; case 172: break;
case 49: case 49:
{ return JetTokens.IF_KEYWORD ; { return JetTokens.IF_KEYWORD ;
} }
case 174: break; case 173: break;
case 65: case 65:
{ return JetTokens.ESCAPE_SEQUENCE; { return JetTokens.ESCAPE_SEQUENCE;
} }
case 175: break; case 174: break;
case 31: case 31:
{ popState(); return JetTokens.CLOSING_QUOTE; { popState(); return JetTokens.CLOSING_QUOTE;
} }
case 176: break; case 175: break;
case 15: case 15:
{ return JetTokens.EQ ; { return JetTokens.EQ ;
} }
case 177: break; case 176: break;
case 28: case 28:
{ return JetTokens.AT ; { return JetTokens.AT ;
} }
case 178: break; case 177: break;
case 75: case 75:
{ return JetTokens.AS_SAFE; { return JetTokens.AS_SAFE;
} }
case 179: break; case 178: break;
case 24: case 24:
{ return JetTokens.LPAR ; { return JetTokens.LPAR ;
} }
case 180: break; case 179: break;
case 9: case 9:
{ return JetTokens.MINUS ; { return JetTokens.MINUS ;
} }
case 181: break; case 180: break;
case 94: case 93:
{ return JetTokens.FALSE_KEYWORD ; { return JetTokens.FALSE_KEYWORD ;
} }
case 182: break; case 181: break;
case 66: case 66:
{ commentDepth++; { commentDepth++;
} }
case 183: break; case 182: break;
case 76: case 76:
{ return JetTokens.FUN_KEYWORD ; { return JetTokens.FUN_KEYWORD ;
} }
case 184: break; case 183: break;
case 47: case 47:
{ return JetTokens.IS_KEYWORD ; { return JetTokens.IS_KEYWORD ;
} }
case 185: break; case 184: break;
case 30: case 30:
{ popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE;
} }
case 186: break; case 185: break;
case 34: case 34:
{ lBraceCount++; return JetTokens.LBRACE; { lBraceCount++; return JetTokens.LBRACE;
} }
case 187: break; case 186: break;
case 83: case 83:
{ yypushback(3); return JetTokens.EXCL; { yypushback(3); return JetTokens.EXCL;
} }
case 188: break; case 187: break;
case 40: case 40:
{ return JetTokens.DIVEQ ; { return JetTokens.DIVEQ ;
} }
case 189: break; case 188: break;
case 86: case 86:
{ return JetTokens.ELSE_KEYWORD ; { return JetTokens.ELSE_KEYWORD ;
} }
case 190: break; case 189: break;
case 51: case 51:
{ return JetTokens.AS_KEYWORD ; { return JetTokens.AS_KEYWORD ;
} }
case 191: break; case 190: break;
case 48: case 48:
{ return JetTokens.IN_KEYWORD ; { return JetTokens.IN_KEYWORD ;
} }
case 192: break; case 191: break;
case 53: case 53:
{ return JetTokens.EQEQ ; { return JetTokens.EQEQ ;
} }
case 193: break; case 192: break;
case 80: case 80:
{ return JetTokens.EQEQEQ ; { return JetTokens.EQEQEQ ;
} }
case 194: break; case 193: break;
case 78: case 78:
{ return JetTokens.VAL_KEYWORD ; { return JetTokens.VAL_KEYWORD ;
} }
case 195: break; case 194: break;
case 89: case 89:
{ return JetTokens.CAPITALIZED_THIS_KEYWORD ; { return JetTokens.CAPITALIZED_THIS_KEYWORD ;
} }
case 196: break; case 195: break;
case 50: case 50:
{ return JetTokens.MULTEQ ; { return JetTokens.MULTEQ ;
} }
case 197: break; case 196: break;
case 41: case 41:
{ if (zzCurrentPos == 0) { { if (zzCurrentPos == 0) {
return JetTokens.SHEBANG_COMMENT; return JetTokens.SHEBANG_COMMENT;
@@ -1316,39 +1311,35 @@ class _JetLexer implements FlexLexer {
return JetTokens.HASH; return JetTokens.HASH;
} }
} }
case 198: break; case 197: break;
case 12: case 12:
{ return JetTokens.LBRACE ; { return JetTokens.LBRACE ;
} }
case 199: break; case 198: break;
case 99: case 98:
{ return JetTokens.OBJECT_KEYWORD ; { return JetTokens.OBJECT_KEYWORD ;
} }
case 200: break; case 199: break;
case 96: case 95:
{ return JetTokens.BREAK_KEYWORD ; { return JetTokens.BREAK_KEYWORD ;
} }
case 201: break; case 200: break;
case 82: case 82:
{ return JetTokens.BLOCK_COMMENT; { return JetTokens.BLOCK_COMMENT;
} }
case 202: break; case 201: break;
case 92:
{ return JetTokens.TRAIT_KEYWORD ;
}
case 203: break;
case 62: case 62:
{ return JetTokens.COLONCOLON; { return JetTokens.COLONCOLON;
} }
case 204: break; case 202: break;
case 33: case 33:
{ {
} }
case 205: break; case 203: break;
case 6: case 6:
{ return JetTokens.HASH ; { return JetTokens.HASH ;
} }
case 206: break; case 204: break;
default: default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true; zzAtEOF = true;
@@ -1360,14 +1351,14 @@ class _JetLexer implements FlexLexer {
zzStartRead = commentStart; zzStartRead = commentStart;
return commentStateToTokenType(state); return commentStateToTokenType(state);
} }
case 241: break; case 238: break;
case DOC_COMMENT: { case DOC_COMMENT: {
int state = yystate(); int state = yystate();
popState(); popState();
zzStartRead = commentStart; zzStartRead = commentStart;
return commentStateToTokenType(state); return commentStateToTokenType(state);
} }
case 242: break; case 239: break;
default: default:
return null; return null;
} }
@@ -54,7 +54,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create( private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create(
INTEGER_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, OPEN_QUOTE, INTEGER_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, OPEN_QUOTE,
PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, TRAIT_KEYWORD, INTERFACE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, INTERFACE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD,
FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD,
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD,
CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, TRY_KEYWORD, ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, TRY_KEYWORD, ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD,
@@ -119,7 +119,6 @@ public class JetExpressionParsing extends AbstractJetParsing {
// declaration // declaration
FUN_KEYWORD, FUN_KEYWORD,
VAL_KEYWORD, VAR_KEYWORD, VAL_KEYWORD, VAR_KEYWORD,
TRAIT_KEYWORD,
INTERFACE_KEYWORD, INTERFACE_KEYWORD,
CLASS_KEYWORD, CLASS_KEYWORD,
TYPE_ALIAS_KEYWORD TYPE_ALIAS_KEYWORD
@@ -1367,7 +1366,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
private IElementType parseLocalDeclarationRest(boolean isEnum) { private IElementType parseLocalDeclarationRest(boolean isEnum) {
IElementType keywordToken = tt(); IElementType keywordToken = tt();
IElementType declType = null; IElementType declType = null;
if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD || keywordToken == INTERFACE_KEYWORD) { if (keywordToken == CLASS_KEYWORD || keywordToken == INTERFACE_KEYWORD) {
declType = myJetParsing.parseClass(isEnum, LOCAL); declType = myJetParsing.parseClass(isEnum, LOCAL);
} }
else if (keywordToken == FUN_KEYWORD) { else if (keywordToken == FUN_KEYWORD) {
@@ -46,7 +46,7 @@ public class JetParsing extends AbstractJetParsing {
} }
private static final TokenSet TOP_LEVEL_DECLARATION_FIRST = TokenSet.create( private static final TokenSet TOP_LEVEL_DECLARATION_FIRST = TokenSet.create(
TYPE_ALIAS_KEYWORD, TRAIT_KEYWORD, INTERFACE_KEYWORD, CLASS_KEYWORD, OBJECT_KEYWORD, TYPE_ALIAS_KEYWORD, INTERFACE_KEYWORD, CLASS_KEYWORD, OBJECT_KEYWORD,
FUN_KEYWORD, VAL_KEYWORD, PACKAGE_KEYWORD); FUN_KEYWORD, VAL_KEYWORD, PACKAGE_KEYWORD);
private static final TokenSet DECLARATION_FIRST = TokenSet.orSet(TOP_LEVEL_DECLARATION_FIRST, private static final TokenSet DECLARATION_FIRST = TokenSet.orSet(TOP_LEVEL_DECLARATION_FIRST,
TokenSet.create(INIT_KEYWORD, GET_KEYWORD, SET_KEYWORD, CONSTRUCTOR_KEYWORD)); TokenSet.create(INIT_KEYWORD, GET_KEYWORD, SET_KEYWORD, CONSTRUCTOR_KEYWORD));
@@ -399,7 +399,7 @@ public class JetParsing extends AbstractJetParsing {
// declType = parsePackageBlock(); // declType = parsePackageBlock();
// } // }
// else // else
if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD || keywordToken == INTERFACE_KEYWORD) { if (keywordToken == CLASS_KEYWORD || keywordToken == INTERFACE_KEYWORD) {
declType = parseClass(detector.isEnumDetected(), TOP_LEVEL); declType = parseClass(detector.isEnumDetected(), TOP_LEVEL);
} }
else if (keywordToken == FUN_KEYWORD) { else if (keywordToken == FUN_KEYWORD) {
@@ -774,9 +774,9 @@ public class JetParsing extends AbstractJetParsing {
assert _at(OBJECT_KEYWORD); assert _at(OBJECT_KEYWORD);
} }
else { else {
assert _atSet(CLASS_KEYWORD, TRAIT_KEYWORD, INTERFACE_KEYWORD); assert _atSet(CLASS_KEYWORD, INTERFACE_KEYWORD);
} }
advance(); // CLASS_KEYWORD, TRAIT_KEYWORD or OBJECT_KEYWORD advance(); // CLASS_KEYWORD, INTERFACE_KEYWORD or OBJECT_KEYWORD
if (nameParsingMode == NameParsingMode.REQUIRED) { if (nameParsingMode == NameParsingMode.REQUIRED) {
OptionalMarker marker = new OptionalMarker(object); OptionalMarker marker = new OptionalMarker(object);
@@ -1068,7 +1068,7 @@ public class JetParsing extends AbstractJetParsing {
private IElementType parseMemberDeclarationRest(boolean isEnum, boolean isDefault) { private IElementType parseMemberDeclarationRest(boolean isEnum, boolean isDefault) {
IElementType keywordToken = tt(); IElementType keywordToken = tt();
IElementType declType = null; IElementType declType = null;
if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD || keywordToken == INTERFACE_KEYWORD) { if (keywordToken == CLASS_KEYWORD || keywordToken == INTERFACE_KEYWORD) {
declType = parseClass(isEnum, CLASS_MEMBER); declType = parseClass(isEnum, CLASS_MEMBER);
} }
else if (keywordToken == FUN_KEYWORD) { else if (keywordToken == FUN_KEYWORD) {
@@ -41,8 +41,7 @@ public open class JetClass : JetClassOrObject {
public fun getProperties(): List<JetProperty> = getBody()?.getProperties().orEmpty() public fun getProperties(): List<JetProperty> = getBody()?.getProperties().orEmpty()
public fun isInterface(): Boolean = public fun isInterface(): Boolean =
getStub()?.isInterface() getStub()?.isInterface() ?: (findChildByType<PsiElement>(JetTokens.INTERFACE_KEYWORD) != null)
?: (findChildByType<PsiElement>(JetTokens.TRAIT_KEYWORD) != null || findChildByType<PsiElement>(JetTokens.INTERFACE_KEYWORD) != null)
public fun isEnum(): Boolean = hasModifier(JetTokens.ENUM_KEYWORD) public fun isEnum(): Boolean = hasModifier(JetTokens.ENUM_KEYWORD)
public fun isSealed(): Boolean = hasModifier(JetTokens.SEALED_KEYWORD) public fun isSealed(): Boolean = hasModifier(JetTokens.SEALED_KEYWORD)
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.resolve;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -233,11 +232,6 @@ public class DeclarationsChecker {
checkTypeParameters(aClass); checkTypeParameters(aClass);
if (aClass.isInterface()) { if (aClass.isInterface()) {
ASTNode traitKeyword = aClass.getNode().findChildByType(JetTokens.TRAIT_KEYWORD);
if (traitKeyword != null) {
trace.report(Errors.DEPRECATED_TRAIT_KEYWORD.on(traitKeyword.getPsi()));
}
checkConstructorInTrait(aClass); checkConstructorInTrait(aClass);
} }
else if (classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS) { else if (classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS) {
+1 -1
View File
@@ -1,4 +1,4 @@
trait Id<T> { interface Id<T> {
val id: T val id: T
} }
@@ -1,4 +1,4 @@
trait A { interface A {
fun visit(a:String, b:String="") : String = b + a fun visit(a:String, b:String="") : String = b + a
} }
@@ -1,4 +1,4 @@
trait Base interface Base
class Derived: Base class Derived: Base
class Another: Base class Another: Base
fun Base.inc(): Derived { return Derived() } fun Base.inc(): Derived { return Derived() }
@@ -1,4 +1,4 @@
trait Base interface Base
class Derived: Base class Derived: Base
class Another: Base class Another: Base
fun Base.inc(): Derived { return Derived() } fun Base.inc(): Derived { return Derived() }
@@ -1,6 +1,6 @@
// KT-3407 Implementing (in Java) an abstract Kotlin class that implements a trait does not respect trait method definition // KT-3407 Implementing (in Java) an abstract Kotlin class that implements a trait does not respect trait method definition
trait T { interface T {
fun foo() = "OK" fun foo() = "OK"
} }
@@ -1,4 +1,4 @@
trait KTrait : Simple { interface KTrait : Simple {
fun bar(): String { fun bar(): String {
return test("O") + Simple.testStatic("O") return test("O") + Simple.testStatic("O")
} }
@@ -1,4 +1,4 @@
trait KTrait: Simple { interface KTrait: Simple {
override fun test(s: String): String { override fun test(s: String): String {
return s + "K" return s + "K"
} }
@@ -1,4 +1,4 @@
trait KTrait { interface KTrait {
fun test(): String { fun test(): String {
return "base"; return "base";
} }
@@ -1,4 +1,4 @@
trait KTrait : Test { interface KTrait : Test {
} }
@@ -1,2 +0,0 @@
<!DEPRECATED_TRAIT_KEYWORD!>trait<!> A {
}
@@ -1,7 +0,0 @@
package
public interface A {
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
}
@@ -2,6 +2,6 @@ package test
annotation class A annotation class A
trait Foo<T : @A Number> : @A CharSequence { interface Foo<T : @A Number> : @A CharSequence {
fun <E, F : @A E> bar() fun <E, F : @A E> bar()
} }
@@ -10,7 +10,7 @@ fun func() {}
class C class C
@file: @file:
trait T interface T
@file:[] @file:[]
trait T interface T
@@ -85,7 +85,7 @@ JetFile: fileAnnotationInWrongPlace.kt
PsiElement(IDENTIFIER)('file') PsiElement(IDENTIFIER)('file')
PsiElement(COLON)(':') PsiElement(COLON)(':')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
PsiElement(trait)('trait') PsiElement(interface)('interface')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('T') PsiElement(IDENTIFIER)('T')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
@@ -101,6 +101,6 @@ JetFile: fileAnnotationInWrongPlace.kt
<empty list> <empty list>
PsiElement(RBRACKET)(']') PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
PsiElement(trait)('trait') PsiElement(interface)('interface')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('T') PsiElement(IDENTIFIER)('T')
+2 -2
View File
@@ -1,10 +1,10 @@
trait A1() { interface A1() {
constructor(x: Int = "", y: Int) : this() { constructor(x: Int = "", y: Int) : this() {
x + y x + y
} }
} }
trait A2 private constructor(private val prop: Int) { interface A2 private constructor(private val prop: Int) {
constructor(x: Int = "", y: Int) : this(x * y) { constructor(x: Int = "", y: Int) : this(x * y) {
x + y x + y
} }
@@ -181,12 +181,6 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName); doTest(fileName);
} }
@TestMetadata("DeprecatedTraitKeyword.kt")
public void testDeprecatedTraitKeyword() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/DeprecatedTraitKeyword.kt");
doTest(fileName);
}
@TestMetadata("DiamondFunction.kt") @TestMetadata("DiamondFunction.kt")
public void testDiamondFunction() throws Exception { public void testDiamondFunction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/DiamondFunction.kt"); String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/DiamondFunction.kt");
@@ -50,7 +50,7 @@ public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
public void testTraitImpl() { public void testTraitImpl() {
doTestKotlinSyntheticClass( doTestKotlinSyntheticClass(
"trait A { fun foo() = 42 }", "interface A { fun foo() = 42 }",
JvmAbi.TRAIT_IMPL_SUFFIX, JvmAbi.TRAIT_IMPL_SUFFIX,
TRAIT_IMPL TRAIT_IMPL
); );
@@ -106,7 +106,7 @@ public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
public void testLocalTraitImpl() { public void testLocalTraitImpl() {
doTestKotlinSyntheticClass( doTestKotlinSyntheticClass(
"fun foo() { trait Local { fun bar() = 42 } }", "fun foo() { interface Local { fun bar() = 42 } }",
"Local$$TImpl.class", "Local$$TImpl.class",
LOCAL_TRAIT_IMPL LOCAL_TRAIT_IMPL
); );
@@ -114,7 +114,7 @@ public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
public void testLocalTraitInterface() { public void testLocalTraitInterface() {
doTestKotlinClass( doTestKotlinClass(
"fun foo() { trait Local { fun bar() = 42 } }", "fun foo() { interface Local { fun bar() = 42 } }",
"Local.class", "Local.class",
LOCAL_CLASS LOCAL_CLASS
); );
@@ -28,7 +28,7 @@ public class MethodOrderTest: CodegenTestCase() {
public fun testDelegatedMethod() { public fun testDelegatedMethod() {
doTest( doTest(
""" """
trait Trait { interface Trait {
fun f0() fun f0()
fun f4() fun f4()
fun f3() fun f3()
@@ -23,14 +23,13 @@ import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.JetTestUtils
import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.ClassReader
import org.jetbrains.org.objectweb.asm.ClassVisitor import org.jetbrains.org.objectweb.asm.ClassVisitor
import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Opcodes
import org.junit.Assert import org.junit.Assert
import java.io.File import java.io.File
public trait AbstractSMAPBaseTest { public interface AbstractSMAPBaseTest {
private fun extractSMAPFromClasses(outputFiles: Iterable<OutputFile>): List<SMAPAndFile> { private fun extractSMAPFromClasses(outputFiles: Iterable<OutputFile>): List<SMAPAndFile> {
return outputFiles.map { outputFile -> return outputFiles.map { outputFile ->
@@ -227,9 +227,9 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testEnumModality("abstract enum class A {}", Modality.ABSTRACT); tc.testEnumModality("abstract enum class A {}", Modality.ABSTRACT);
tc.testEnumModality("final enum class A {}", Modality.FINAL); tc.testEnumModality("final enum class A {}", Modality.FINAL);
tc.testTraitModality("trait A {}", Modality.ABSTRACT); tc.testTraitModality("interface A {}", Modality.ABSTRACT);
tc.testTraitModality("open trait A {}", Modality.ABSTRACT); tc.testTraitModality("open interface A {}", Modality.ABSTRACT);
tc.testTraitModality("abstract trait A {}", Modality.ABSTRACT); tc.testTraitModality("abstract interface A {}", Modality.ABSTRACT);
} }
public void testFunctionModality() { public void testFunctionModality() {
@@ -248,11 +248,11 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testFunctionModalityInEnum("abstract enum class A { ; open fun foo() }", Modality.OPEN); tc.testFunctionModalityInEnum("abstract enum class A { ; open fun foo() }", Modality.OPEN);
tc.testFunctionModalityInEnum("abstract enum class A { ; abstract fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInEnum("abstract enum class A { ; abstract fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A { fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInTrait("interface A { fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A { abstract fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInTrait("interface A { abstract fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A { fun foo() {} }", Modality.OPEN); tc.testFunctionModalityInTrait("interface A { fun foo() {} }", Modality.OPEN);
tc.testFunctionModalityInTrait("trait A { open fun foo() {} }", Modality.OPEN); tc.testFunctionModalityInTrait("interface A { open fun foo() {} }", Modality.OPEN);
tc.testFunctionModalityInTrait("trait A { final fun foo() {} }", Modality.FINAL); tc.testFunctionModalityInTrait("interface A { final fun foo() {} }", Modality.FINAL);
} }
public void testFunctionModalityWithOverride() { public void testFunctionModalityWithOverride() {
@@ -272,11 +272,11 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testFunctionModalityInEnum("abstract enum class A : C { ; open override fun foo() }", Modality.OPEN); tc.testFunctionModalityInEnum("abstract enum class A : C { ; open override fun foo() }", Modality.OPEN);
tc.testFunctionModalityInEnum("abstract enum class A : C { ; abstract override fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInEnum("abstract enum class A : C { ; abstract override fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A : C { override fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInTrait("interface A : C { override fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A : C { abstract override fun foo() }", Modality.ABSTRACT); tc.testFunctionModalityInTrait("interface A : C { abstract override fun foo() }", Modality.ABSTRACT);
tc.testFunctionModalityInTrait("trait A : C { override fun foo() {} }", Modality.OPEN); tc.testFunctionModalityInTrait("interface A : C { override fun foo() {} }", Modality.OPEN);
tc.testFunctionModalityInTrait("trait A : C { open override fun foo() {} }", Modality.OPEN); tc.testFunctionModalityInTrait("interface A : C { open override fun foo() {} }", Modality.OPEN);
tc.testFunctionModalityInTrait("trait A : C { final override fun foo() {} }", Modality.FINAL); tc.testFunctionModalityInTrait("interface A : C { final override fun foo() {} }", Modality.FINAL);
} }
public void testPropertyModality() { public void testPropertyModality() {
@@ -297,18 +297,18 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testPropertyModalityInEnum("abstract enum class A { ; open val a: Int = 0 }", Modality.OPEN); tc.testPropertyModalityInEnum("abstract enum class A { ; open val a: Int = 0 }", Modality.OPEN);
tc.testPropertyModalityInEnum("abstract enum class A { ; abstract val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInEnum("abstract enum class A { ; abstract val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { open val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { open val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { abstract val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { abstract val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { open abstract val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { open abstract val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { val a: Int get() = 10 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A { val a: Int get() = 10 }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A { var a: Int get() = 1; set(v: Int) {} }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A { var a: Int get() = 1; set(v: Int) {} }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A { val a: Int open get }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { val a: Int open get }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { var a: Int open get open set}", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { var a: Int open get open set}", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { open val a: Int get }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A { open val a: Int get }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A { open val a: Int get() = 1 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A { open val a: Int get() = 1 }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A { open val a: Int final get() = 1 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A { open val a: Int final get() = 1 }", Modality.OPEN);
} }
public void testPropertyModalityWithOverride() { public void testPropertyModalityWithOverride() {
@@ -329,18 +329,18 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testPropertyModalityInEnum("abstract enum class A : C { ; open override val a: Int = 0 }", Modality.OPEN); tc.testPropertyModalityInEnum("abstract enum class A : C { ; open override val a: Int = 0 }", Modality.OPEN);
tc.testPropertyModalityInEnum("abstract enum class A : C { ; abstract override val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInEnum("abstract enum class A : C { ; abstract override val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { override val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { override val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { open override val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { open override val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { abstract override val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { abstract override val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { open abstract override val a: Int }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { open abstract override val a: Int }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { override val a: Int get() = 10 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A : C { override val a: Int get() = 10 }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A : C { override var a: Int get() = 1; set(v: Int) {} }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A : C { override var a: Int get() = 1; set(v: Int) {} }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A : C { override val a: Int open get }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { override val a: Int open get }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { override var a: Int open get open set }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { override var a: Int open get open set }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { open override val a: Int get }", Modality.ABSTRACT); tc.testPropertyModalityInTrait("interface A : C { open override val a: Int get }", Modality.ABSTRACT);
tc.testPropertyModalityInTrait("trait A : C { open override val a: Int get() = 1 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A : C { open override val a: Int get() = 1 }", Modality.OPEN);
tc.testPropertyModalityInTrait("trait A : C { open override val a: Int final get() = 1 }", Modality.OPEN); tc.testPropertyModalityInTrait("interface A : C { open override val a: Int final get() = 1 }", Modality.OPEN);
} }
public void testPropertyAccessorModality() { public void testPropertyAccessorModality() {
@@ -381,23 +381,23 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testPropertyAccessorModalityInClass("abstract class A { open val a: Int open get() = 10 }", Modality.OPEN); tc.testPropertyAccessorModalityInClass("abstract class A { open val a: Int open get() = 10 }", Modality.OPEN);
tc.testPropertyAccessorModalityInClass("abstract class A { open val a: Int final get() = 10 }", Modality.FINAL); tc.testPropertyAccessorModalityInClass("abstract class A { open val a: Int final get() = 10 }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int abstract get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int abstract get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int open get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int open get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int open get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int open get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int final get }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int final get }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("trait A { val a: Int final get() = 1 }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("interface A { val a: Int final get() = 1 }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int abstract get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int abstract get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int open get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int open get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int open get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int open get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int final get }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int final get }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("abstract trait A { val a: Int final get() = 1 }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("abstract interface A { val a: Int final get() = 1 }", Modality.FINAL);
} }
public void testPropertyAccessorModalityWithOverride() { public void testPropertyAccessorModalityWithOverride() {
@@ -446,14 +446,14 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
tc.testPropertyAccessorModalityInClass("abstract class A : C { open override val a: Int open override get() = 10 }", Modality.OPEN); tc.testPropertyAccessorModalityInClass("abstract class A : C { open override val a: Int open override get() = 10 }", Modality.OPEN);
tc.testPropertyAccessorModalityInClass("abstract class A : C { open override val a: Int final override get() = 10 }", Modality.FINAL); tc.testPropertyAccessorModalityInClass("abstract class A : C { open override val a: Int final override get() = 10 }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int override get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int override get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int abstract get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int abstract get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int open get }", Modality.ABSTRACT); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int open get }", Modality.ABSTRACT);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int open override get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int open override get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int override get() = 1 }", Modality.OPEN); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int override get() = 1 }", Modality.OPEN);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int final get }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int final get }", Modality.FINAL);
tc.testPropertyAccessorModalityInTrait("trait A : C { override val a: Int final override get() = 1 }", Modality.FINAL); tc.testPropertyAccessorModalityInTrait("interface A : C { override val a: Int final override get() = 1 }", Modality.FINAL);
} }
} }
@@ -51,7 +51,6 @@ public class KeywordStringsGenerated {
"while", "while",
"do", "do",
"when", "when",
"trait",
"interface", "interface",
"This" "This"
)); ));
@@ -60,7 +60,6 @@ fun box(): String {
commonCasesWithTestNotRenamed() commonCasesWithTestNotRenamed()
case("class", "class $KEYWORD_MARKER { companion object {} }", "", testNotRenamedByName) case("class", "class $KEYWORD_MARKER { companion object {} }", "", testNotRenamedByName)
case("trait", "trait $KEYWORD_MARKER { companion object {} }", "", testNotRenamedByName)
case("interface", "interface $KEYWORD_MARKER { companion object {} }", "", testNotRenamedByName) case("interface", "interface $KEYWORD_MARKER { companion object {} }", "", testNotRenamedByName)
case("enum", "enum class $KEYWORD_MARKER { foo }", "", testNotRenamed("$KEYWORD_MARKER.foo")) case("enum", "enum class $KEYWORD_MARKER { foo }", "", testNotRenamed("$KEYWORD_MARKER.foo"))
case("object", "object $KEYWORD_MARKER {}", "", testNotRenamedByName) case("object", "object $KEYWORD_MARKER {}", "", testNotRenamedByName)
@@ -165,7 +164,7 @@ fun box(): String {
suite("delegated", suite("delegated",
""" """
trait Trait { interface Trait {
$DECLARATION_MARKER $DECLARATION_MARKER
} }
@@ -151,9 +151,7 @@ public open class JetPsiChecker : Annotator, HighlightRangeExtension {
when (factory) { when (factory) {
Errors.DEPRECATED_SYMBOL, Errors.DEPRECATED_SYMBOL,
Errors.DEPRECATED_SYMBOL_WITH_MESSAGE, Errors.DEPRECATED_SYMBOL_WITH_MESSAGE -> annotation.setTextAttributes(CodeInsightColors.DEPRECATED_ATTRIBUTES)
Errors.DEPRECATED_TRAIT_KEYWORD
-> annotation.setTextAttributes(CodeInsightColors.DEPRECATED_ATTRIBUTES)
} }
setUpAnnotation(diagnostic, annotation, if (factory in Errors.UNUSED_ELEMENT_DIAGNOSTICS) setUpAnnotation(diagnostic, annotation, if (factory in Errors.UNUSED_ELEMENT_DIAGNOSTICS)
@@ -41,8 +41,7 @@ open class KeywordLookupObject
object KeywordCompletion { object KeywordCompletion {
private val NON_ACTUAL_KEYWORDS = setOf(CAPITALIZED_THIS_KEYWORD, private val NON_ACTUAL_KEYWORDS = setOf(CAPITALIZED_THIS_KEYWORD,
TYPE_ALIAS_KEYWORD, TYPE_ALIAS_KEYWORD)
TRAIT_KEYWORD)
private val ALL_KEYWORDS = (KEYWORDS.getTypes() + SOFT_KEYWORDS.getTypes()) private val ALL_KEYWORDS = (KEYWORDS.getTypes() + SOFT_KEYWORDS.getTypes())
.filter { it !in NON_ACTUAL_KEYWORDS } .filter { it !in NON_ACTUAL_KEYWORDS }
.map { it as JetKeywordToken } .map { it as JetKeywordToken }
+1 -1
View File
@@ -2,7 +2,7 @@ fun foo(p: Iterable<D>) {
p.filter { it.<caret> } p.filter { it.<caret> }
} }
trait D { interface D {
fun bar() fun bar()
} }
@@ -1,8 +1,8 @@
trait T1 { interface T1 {
fun inT1(){} fun inT1(){}
} }
trait T2 { interface T2 {
fun inT2(){} fun inT2(){}
} }
@@ -10,7 +10,7 @@ open class C {
} }
} }
trait T interface T
// EXIST: { itemText: "extFunForT", attributes: "bold" } // EXIST: { itemText: "extFunForT", attributes: "bold" }
// EXIST: { itemText: "extFunForC", attributes: "bold" } // EXIST: { itemText: "extFunForC", attributes: "bold" }
@@ -1,4 +1,4 @@
trait T { interface T {
fun fromTrait(){} fun fromTrait(){}
} }
@@ -1,4 +1,4 @@
trait T { interface T {
fun fromTrait(){} fun fromTrait(){}
} }
@@ -1,4 +1,4 @@
trait T { interface T {
fun f(){} fun f(){}
} }
@@ -1,4 +1,4 @@
trait T { interface T {
fun foo1(){} fun foo1(){}
fun foo2(){} fun foo2(){}
} }
@@ -1,6 +1,6 @@
fun globalFun(){} fun globalFun(){}
trait T { interface T {
fun fromTrait(){} fun fromTrait(){}
} }
@@ -1,4 +1,4 @@
trait I<T> interface I<T>
fun <E, T : I<E>> T.ext() : T = this fun <E, T : I<E>> T.ext() : T = this
@@ -1,8 +1,8 @@
trait A { interface A {
fun foo(): Int fun foo(): Int
} }
trait B: A { interface B: A {
override fun foo(): Int override fun foo(): Int
override fun foo1(): Int override fun foo1(): Int
} }
@@ -1,4 +1,4 @@
trait Expr interface Expr
class Num(val value : Int) : Expr class Num(val value : Int) : Expr
fun eval(e : Expr) { fun eval(e : Expr) {
@@ -1,4 +1,4 @@
trait Expr { interface Expr {
public fun testThis() { public fun testThis() {
if (this is Num) { if (this is Num) {
this.<caret> this.<caret>
@@ -1,4 +1,4 @@
trait Expr interface Expr
class Sum(val left : Expr, val right : Expr) : Expr class Sum(val left : Expr, val right : Expr) : Expr
fun evalWhen(e : Expr) : Int = when (e) { fun evalWhen(e : Expr) : Int = when (e) {
@@ -1,4 +1,4 @@
trait Trait<T> interface Trait<T>
fun<T> Trait<T>.extension(t: T): T = t fun<T> Trait<T>.extension(t: T): T = t
@@ -1,6 +1,6 @@
package first package first
trait TestedTrait() { interface TestedTrait() {
} }
fun firstFun() { fun firstFun() {
+1 -1
View File
@@ -1,4 +1,4 @@
trait X { interface X {
open fun fn() {} open fun fn() {}
} }
@@ -1,4 +1,4 @@
trait X { interface X {
open fun fn() {} open fun fn() {}
} }
@@ -1,3 +1,3 @@
public trait Comparator<T> { public interface Comparator<T> {
public fun compare(var1: T, var2: T): Int public fun compare(var1: T, var2: T): Int
} }
@@ -1,4 +1,4 @@
trait Foo interface Foo
var a : Foo = <caret> var a : Foo = <caret>
@@ -1,4 +1,4 @@
trait Foo interface Foo
var a : Foo = object: Foo {<caret>} var a : Foo = object: Foo {<caret>}
+1 -1
View File
@@ -1,4 +1,4 @@
trait Foo interface Foo
fun foo(f: Foo, i: Int){} fun foo(f: Foo, i: Int){}
@@ -1,4 +1,4 @@
trait Foo interface Foo
fun foo(f: Foo, i: Int){} fun foo(f: Foo, i: Int){}
@@ -4,9 +4,9 @@ fun test() {
registerHandler(<caret>) registerHandler(<caret>)
} }
trait Message interface Message
trait Handler<E> { interface Handler<E> {
fun handle(e: E) fun handle(e: E)
} }
@@ -8,9 +8,9 @@ fun test() {
}) })
} }
trait Message interface Message
trait Handler<E> { interface Handler<E> {
fun handle(e: E) fun handle(e: E)
} }
@@ -1,8 +1,8 @@
class `class`<T> class `class`<T>
trait `trait` interface `interface`
fun foo(p: `class`<`trait`>){} fun foo(p: `class`<`interface`>){}
fun f(){ fun f(){
foo(<caret>) foo(<caret>)
@@ -1,8 +1,8 @@
class `class`<T> class `class`<T>
trait `trait` interface `interface`
fun foo(p: `class`<`trait`>){} fun foo(p: `class`<`interface`>){}
fun f(){ fun f(){
foo(`class`())<caret> foo(`class`())<caret>
@@ -1,5 +1,5 @@
trait X interface X
trait Y interface Y
fun X.iterator(): Y fun X.iterator(): Y
fun Y.next(): Int fun Y.next(): Int
@@ -1,5 +1,5 @@
trait X interface X
trait Y interface Y
fun X.iterator(): Y fun X.iterator(): Y
fun Y.next(): Int fun Y.next(): Int
@@ -1,5 +1,5 @@
trait X interface X
trait Y interface Y
fun X.iterator(): Y fun X.iterator(): Y
fun Y.next(): Int fun Y.next(): Int
@@ -1,5 +1,5 @@
trait X interface X
trait Y interface Y
fun X.iterator(): Y fun X.iterator(): Y
fun Y.next(): Int fun Y.next(): Int
@@ -1,7 +1,7 @@
package p package p
class Outer { class Outer {
trait T { interface T {
object Null : T { } object Null : T { }
} }
} }
@@ -1,7 +1,7 @@
package p package p
class Outer { class Outer {
trait T { interface T {
object Null : T { } object Null : T { }
} }
} }
+1 -1
View File
@@ -20,7 +20,7 @@ public class LibClass {
public val nested: Nested = Nested() public val nested: Nested = Nested()
} }
public trait LibTrait { public interface LibTrait {
public fun foo() { public fun foo() {
} }
} }
+1 -1
View File
@@ -1,4 +1,4 @@
trait Foo{ interface Foo{
public fun foo() : Foo public fun foo() : Foo
public fun s() : String public fun s() : String
public val prop : String public val prop : String
+1 -1
View File
@@ -1,4 +1,4 @@
trait T { interface T {
fun fromTrait() = "" fun fromTrait() = ""
} }
+1 -1
View File
@@ -1,4 +1,4 @@
trait I interface I
object O : I object O : I
+1 -1
View File
@@ -1,6 +1,6 @@
package p package p
trait T { interface T {
object Null : T { } object Null : T { }
object Other {} object Other {}
+1 -1
View File
@@ -1,4 +1,4 @@
trait Foo{ interface Foo{
fun foo1() : String fun foo1() : String
fun foo2() : Object fun foo2() : Object
val prop : String val prop : String
+1 -1
View File
@@ -1,4 +1,4 @@
trait Foo interface Foo
var a : Foo = <caret> var a : Foo = <caret>
@@ -1,4 +1,4 @@
trait Foo interface Foo
var a : Foo = o<caret> var a : Foo = o<caret>
@@ -1,4 +1,4 @@
trait T interface T
class C { class C {
inner class Inner1(s: String) : T inner class Inner1(s: String) : T
@@ -1,5 +1,5 @@
trait X interface X
trait Y interface Y
fun X.iterator(): Y fun X.iterator(): Y
fun Y.next(): Int fun Y.next(): Int
@@ -1,6 +1,6 @@
trait X interface X
trait Y: X interface Y: X
trait Z interface Z
fun foo(p1: Collection<X>, p2: Collection<Y>, p3: Collection<Z>, p4: Collection<X?>) { fun foo(p1: Collection<X>, p2: Collection<Y>, p3: Collection<Z>, p4: Collection<X?>) {
for (i: X in <caret>) for (i: X in <caret>)
@@ -1,8 +1,8 @@
import java.util.ArrayList import java.util.ArrayList
trait A interface A
trait B : A interface B : A
trait C interface C
fun foo(a: A, cA: Collection<A>, cB: Collection<B>, cC: Collection<C>, cAny: Collection<Any>, fun foo(a: A, cA: Collection<A>, cB: Collection<B>, cC: Collection<C>, cAny: Collection<Any>,
lA: List<A>, lb: List<B>, lC: List<C>, lAny: List<Any>, lA: List<A>, lb: List<B>, lC: List<C>, lAny: List<Any>,
+3 -3
View File
@@ -1,6 +1,6 @@
trait A interface A
trait B : A interface B : A
trait C interface C
fun foo(a: A){} fun foo(a: A){}
fun foo(c: C){} fun foo(c: C){}
+3 -3
View File
@@ -1,6 +1,6 @@
trait A interface A
trait B : A interface B : A
trait C interface C
fun foo(a: A?){} fun foo(a: A?){}
fun foo(c: C?){} fun foo(c: C?){}
+3 -3
View File
@@ -1,6 +1,6 @@
trait A interface A
trait B : A interface B : A
trait C interface C
fun foo(a: A){} fun foo(a: A){}
fun foo(c: C){} fun foo(c: C){}
+3 -3
View File
@@ -1,6 +1,6 @@
trait A interface A
trait B : A interface B : A
trait C interface C
fun foo(a: A){} fun foo(a: A){}
fun foo(c: C){} fun foo(c: C){}
@@ -1,6 +1,6 @@
trait X interface X
trait Y : X interface Y : X
trait Z interface Z
fun X.contains(s: String): Boolean fun X.contains(s: String): Boolean
@@ -1,12 +1,12 @@
trait X { interface X {
fun contains(s: String): Boolean fun contains(s: String): Boolean
} }
trait Y { interface Y {
fun contains(i: Int): Boolean fun contains(i: Int): Boolean
} }
trait Z { interface Z {
fun contains(o: Any): Boolean fun contains(o: Any): Boolean
} }
@@ -1,8 +1,8 @@
trait X<T> { interface X<T> {
fun contains(t: T): Boolean fun contains(t: T): Boolean
} }
trait A { interface A {
fun<T> createX(t: T): X<T> fun<T> createX(t: T): X<T>
fun foo(s: String) { fun foo(s: String) {
@@ -1,8 +1,8 @@
trait X<T> interface X<T>
fun<T> X<T>.contains(t: T): Boolean fun<T> X<T>.contains(t: T): Boolean
trait A { interface A {
fun<T> createX(t: T): X<T> fun<T> createX(t: T): X<T>
fun foo(s: String) { fun foo(s: String) {
@@ -1,4 +1,4 @@
trait X { interface X {
fun contains(s: String): Boolean? fun contains(s: String): Boolean?
} }
+1 -1
View File
@@ -1,4 +1,4 @@
trait T interface T
open class A : T open class A : T
@@ -1,3 +1,3 @@
public trait Comparator<T> { public interface Comparator<T> {
public fun compare(var1: T, var2: T): Int public fun compare(var1: T, var2: T): Int
} }
@@ -1,10 +1,10 @@
package p package p
trait I1 interface I1
trait I2 interface I2
trait I3 interface I3
trait KotlinTrait<T1, T2> interface KotlinTrait<T1, T2>
open class KotlinInheritor1<T> : KotlinTrait<T, I2> open class KotlinInheritor1<T> : KotlinTrait<T, I2>
@@ -1,10 +1,10 @@
package p package p
trait I1 interface I1
trait I2 interface I2
trait I3 interface I3
trait KotlinTrait<T1, T2> interface KotlinTrait<T1, T2>
class KotlinInheritor<T> : KotlinTrait<T, T> class KotlinInheritor<T> : KotlinTrait<T, T>
@@ -1,10 +1,10 @@
package p package p
trait I1 interface I1
trait I2 interface I2
trait I3 interface I3
trait KotlinTrait<T1, T2> interface KotlinTrait<T1, T2>
class KotlinInheritor<T> : KotlinTrait<T, T> class KotlinInheritor<T> : KotlinTrait<T, T>
@@ -1,9 +1,9 @@
package p package p
trait I1<T> interface I1<T>
trait I2 interface I2
trait KotlinTrait<T> interface KotlinTrait<T>
class KotlinInheritor<T> : KotlinTrait<I1<T>> class KotlinInheritor<T> : KotlinTrait<I1<T>>
@@ -1,4 +1,4 @@
trait T interface T
class C : A() class C : A()
@@ -1,6 +1,6 @@
package p2 package p2
trait KotlinTrait interface KotlinTrait
open class KotlinInheritor1 : KotlinTrait open class KotlinInheritor1 : KotlinTrait
@@ -1,9 +1,9 @@
class X class X
class Y class Y
trait T1 interface T1
trait T2<T> interface T2<T>
trait T3<T> interface T3<T>
class C1 : T1 class C1 : T1
class C2<T> : T2<T>, T3<T> class C2<T> : T2<T>, T3<T>
@@ -1,4 +1,4 @@
trait X interface X
fun foo(x: X) { fun foo(x: X) {
JavaClass.search(<caret>) JavaClass.search(<caret>)
@@ -1,4 +1,4 @@
trait T interface T
object OO : T object OO : T
@@ -1,5 +1,5 @@
<html> <html>
<body> <body>
This intention converts a member of a class or trait into an extension to this class/trait. This intention converts a member of a class or interface into an extension to this class/interface.
</body> </body>
</html> </html>
@@ -82,7 +82,6 @@ public class KotlinCleanupInspection(): LocalInspectionTool(), CleanupLocalInspe
private fun Diagnostic.isCleanup() = getFactory() in cleanupDiagnosticsFactories || isObsoleteLabel() private fun Diagnostic.isCleanup() = getFactory() in cleanupDiagnosticsFactories || isObsoleteLabel()
private val cleanupDiagnosticsFactories = setOf( private val cleanupDiagnosticsFactories = setOf(
Errors.DEPRECATED_TRAIT_KEYWORD,
Errors.DEPRECATED_LAMBDA_SYNTAX, Errors.DEPRECATED_LAMBDA_SYNTAX,
Errors.MISSING_CONSTRUCTOR_KEYWORD, Errors.MISSING_CONSTRUCTOR_KEYWORD,
Errors.FUNCTION_EXPRESSION_WITH_NAME, Errors.FUNCTION_EXPRESSION_WITH_NAME,
@@ -1,55 +0,0 @@
/*
* Copyright 2010-2015 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionFactory
import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.psi.JetClass
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.psi.JetPsiFactory
public class DeprecatedTraitSyntaxFix(element: PsiElement): JetIntentionAction<PsiElement>(element), CleanupFix {
override fun getFamilyName() = "Replace 'trait' with 'interface'"
override fun getText() = getFamilyName()
override fun invoke(project: Project, editor: Editor?, file: JetFile)
= replaceWithInterfaceKeyword(element)
companion object : JetSingleIntentionActionFactory() {
fun replaceWithInterfaceKeyword(element: PsiElement) {
val cls = JetPsiFactory(element.getProject()).createClass("interface A {}")
element.replace(cls.getNode().findChildByType(JetTokens.INTERFACE_KEYWORD)!!.getPsi())
}
override fun createAction(diagnostic: Diagnostic): IntentionAction =
DeprecatedTraitSyntaxFix(diagnostic.getPsiElement())
public fun createWholeProjectFixFactory(): JetSingleIntentionActionFactory = createIntentionFactory {
JetWholeProjectForEachElementOfTypeFix.createByPredicate<JetClass>(
predicate = { it.getNode().findChildByType(JetTokens.TRAIT_KEYWORD) != null },
taskProcessor = { replaceWithInterfaceKeyword(it.getNode().findChildByType(JetTokens.TRAIT_KEYWORD)!!.getPsi())},
name = "Replace 'trait' with 'interface' in whole project"
)
}
}
}

Some files were not shown because too many files have changed in this diff Show More