diff --git a/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java b/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java index d50cc507f1a..ad09df44b17 100644 --- a/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java +++ b/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java @@ -127,7 +127,7 @@ public interface JetTokens { JetKeywordToken GET_KEYWORD = JetKeywordToken.softKeyword("get"); JetKeywordToken SET_KEYWORD = JetKeywordToken.softKeyword("set"); JetKeywordToken ABSTRACT_KEYWORD = JetKeywordToken.softKeyword("abstract"); - JetKeywordToken VIRTUAL_KEYWORD = JetKeywordToken.softKeyword("virtual"); + JetKeywordToken VIRTUAL_KEYWORD = JetKeywordToken.softKeyword("open"); JetKeywordToken ENUM_KEYWORD = JetKeywordToken.softKeyword("enum"); JetKeywordToken OPEN_KEYWORD = JetKeywordToken.softKeyword("open"); JetKeywordToken ATTRIBUTE_KEYWORD = JetKeywordToken.softKeyword("attribute"); diff --git a/examples/src/BitArith.jetl b/examples/src/BitArith.jetl index d9bdf1dbcc0..6a410c1677c 100644 --- a/examples/src/BitArith.jetl +++ b/examples/src/BitArith.jetl @@ -21,7 +21,7 @@ fun countOnes(x : INumber) = if (x == 0) 0 else mostSignificantBit(x) + countOne fun Int.matchMask(mask : Int) = this and mask == mask -virtual class INumber : IComparable { +open class INumber : IComparable { val bits : Int [operator] fun plus(other : T) : T [operator] fun shl(bits : Int) : T diff --git a/examples/src/IPushPop.jetl b/examples/src/IPushPop.jetl index 09b1f2d8267..84725423fdc 100644 --- a/examples/src/IPushPop.jetl +++ b/examples/src/IPushPop.jetl @@ -1,4 +1,4 @@ -virtual class IPushPop { +open class IPushPop { val isEmpty : Boolean fun push(item : T) fun pop() : T diff --git a/examples/src/PolymorphicClassObjects.jetl b/examples/src/PolymorphicClassObjects.jetl index 86fcb9ade5b..57ba9826889 100644 --- a/examples/src/PolymorphicClassObjects.jetl +++ b/examples/src/PolymorphicClassObjects.jetl @@ -1,9 +1,9 @@ -virtual class Builder { +open class Builder { [operator] fun plusAssign(item : E) fun result() : R } -virtual class Buildable { +open class Buildable { fun newBuilder() : Builder } diff --git a/examples/src/array/MutableArray.jetl b/examples/src/array/MutableArray.jetl index 311279c875c..cb270fa33a8 100644 --- a/examples/src/array/MutableArray.jetl +++ b/examples/src/array/MutableArray.jetl @@ -2,11 +2,11 @@ These declarations are "shallow" in the sense that they are not really compiled, only the type-checker uses them */ -virtual class ReadOnlyArray : ISized { +open class ReadOnlyArray : ISized { [operator] fun get(index : Int) : T } -virtual class WriteOnlyArray : ISized { // This is needed to keep IIterator's covariant +open class WriteOnlyArray : ISized { // This is needed to keep IIterator's covariant [operator] fun set(index : Int, value : T) } diff --git a/examples/src/collections/HashMap.jetl b/examples/src/collections/HashMap.jetl index 7839372b766..ac690682d89 100644 --- a/examples/src/collections/HashMap.jetl +++ b/examples/src/collections/HashMap.jetl @@ -1,15 +1,15 @@ -virtual class IEquality { +open class IEquality { fun equals(other : Any) : Boolean = (this as java.lang.Object).equals(other as java.lang.Object) } -virtual class IHashable : IEquality { +open class IHashable : IEquality { val hashCode : Integer get() = (this as java.lang.Object).hashCode() } -virtual class IMap { +open class IMap { fun get(key : K) : V fun set(key : K, value : V) : V fun remove(key : K) : V @@ -21,7 +21,7 @@ class HashableWrapper wraps (val obj : Any) : IHashable [inline] fun Any.hashable() : HashableWrapper = new HashableWrapper(this) -virtual class IHashingStrategy { +open class IHashingStrategy { fun equals(a : K, b : K) : Boolean fun hashCode(a : K) : Integer } diff --git a/examples/src/collections/IIterable.jetl b/examples/src/collections/IIterable.jetl index 5e69296338c..c9a55af4058 100644 --- a/examples/src/collections/IIterable.jetl +++ b/examples/src/collections/IIterable.jetl @@ -1,3 +1,3 @@ -virtual class IIterable { +open class IIterable { fun iterator() : IIterator } diff --git a/examples/src/collections/IIterator.jetl b/examples/src/collections/IIterator.jetl index faeb4d40a5c..1739eae7a01 100644 --- a/examples/src/collections/IIterator.jetl +++ b/examples/src/collections/IIterator.jetl @@ -1,4 +1,4 @@ -virtual class IIterator { +open class IIterator { fun next() : T val hasNext : Boolean diff --git a/examples/src/collections/IList.jetl b/examples/src/collections/IList.jetl index 6daa67bac0f..69fff05ca87 100644 --- a/examples/src/collections/IList.jetl +++ b/examples/src/collections/IList.jetl @@ -1,4 +1,4 @@ -virtual class IList : IIterable, ISized { +open class IList : IIterable, ISized { [operator] fun get(index : Int) : T val isEmpty : Boolean } \ No newline at end of file diff --git a/examples/src/collections/IMutableIterable.jetl b/examples/src/collections/IMutableIterable.jetl index 22b6e017d8e..1ad49e2aec9 100644 --- a/examples/src/collections/IMutableIterable.jetl +++ b/examples/src/collections/IMutableIterable.jetl @@ -1,3 +1,3 @@ -virtual class IMutableIterable : IIterable { +open class IMutableIterable : IIterable { fun mutableIterator() : IMutableIterator } \ No newline at end of file diff --git a/examples/src/collections/IMutableIterator.jetl b/examples/src/collections/IMutableIterator.jetl index 51111049926..1449ab40dca 100644 --- a/examples/src/collections/IMutableIterator.jetl +++ b/examples/src/collections/IMutableIterator.jetl @@ -1,4 +1,4 @@ -virtual class IMutableIterator : IIterator { +open class IMutableIterator : IIterator { fun remove() : T /* diff --git a/examples/src/collections/IMutableList.jetl b/examples/src/collections/IMutableList.jetl index 711f0d6bfc7..55fd048e7a7 100644 --- a/examples/src/collections/IMutableList.jetl +++ b/examples/src/collections/IMutableList.jetl @@ -1,4 +1,4 @@ -virtual class IMutableList : IList, IMutableIterable { +open class IMutableList : IList, IMutableIterable { fun set(index : Int, value : T) : T fun add(index : Int, value : T) fun remove(index : Int) : T diff --git a/examples/src/collections/IMutableSet.jetl b/examples/src/collections/IMutableSet.jetl index eacb0d740ec..95eb05d2456 100644 --- a/examples/src/collections/IMutableSet.jetl +++ b/examples/src/collections/IMutableSet.jetl @@ -1,4 +1,4 @@ -virtual class IMutableSet : ISet, IMutableIterable { +open class IMutableSet : ISet, IMutableIterable { fun add(item : T) : Boolean fun remove(item : T) : Boolean } \ No newline at end of file diff --git a/examples/src/collections/ISet.jetl b/examples/src/collections/ISet.jetl index bfe2753b8df..0b6741470fd 100644 --- a/examples/src/collections/ISet.jetl +++ b/examples/src/collections/ISet.jetl @@ -1,3 +1,3 @@ -virtual class ISet : IIterable, ISized { +open class ISet : IIterable, ISized { fun contains(item : T) : Boolean } diff --git a/examples/src/collections/ISized.jetl b/examples/src/collections/ISized.jetl index 9f12cb218b0..5e5977f253e 100644 --- a/examples/src/collections/ISized.jetl +++ b/examples/src/collections/ISized.jetl @@ -1,3 +1,3 @@ -virtual class ISized { +open class ISized { val size : Int } \ No newline at end of file diff --git a/examples/src/io/IOSamples.jetl b/examples/src/io/IOSamples.jetl index 4304fc00a38..621b6c0033b 100644 --- a/examples/src/io/IOSamples.jetl +++ b/examples/src/io/IOSamples.jetl @@ -1,8 +1,8 @@ -virtual class IAdder { +open class IAdder { fun add(item : T) : Boolean } -virtual class ICloseable { +open class ICloseable { fun close() } diff --git a/examples/src/map/IMap.jetl b/examples/src/map/IMap.jetl index 0b912bb838d..da51189c006 100644 --- a/examples/src/map/IMap.jetl +++ b/examples/src/map/IMap.jetl @@ -1,4 +1,4 @@ -virtual class IMap { +open class IMap { } \ No newline at end of file diff --git a/examples/src/priorityqueues/IPriorityQueue.jetl b/examples/src/priorityqueues/IPriorityQueue.jetl index b343cd49cc3..ee694f5c9d4 100644 --- a/examples/src/priorityqueues/IPriorityQueue.jetl +++ b/examples/src/priorityqueues/IPriorityQueue.jetl @@ -1,4 +1,4 @@ -virtual class IPriorityQueue { +open class IPriorityQueue { fun extract() : T fun add(item : T) val isEmpty : Boolean diff --git a/examples/src/util/IComparable.jetl b/examples/src/util/IComparable.jetl index b802c381464..1ce3f600ea6 100644 --- a/examples/src/util/IComparable.jetl +++ b/examples/src/util/IComparable.jetl @@ -1,3 +1,3 @@ -virtual class IComparable { +open class IComparable { fun compareTo(other : T) : Int } \ No newline at end of file diff --git a/grammar/src/class.grm b/grammar/src/class.grm index 94e8cb09baf..8bf1e016edd 100644 --- a/grammar/src/class.grm +++ b/grammar/src/class.grm @@ -17,9 +17,9 @@ internal class Example>(protected val x : Foo, y : So */ class - : modifiers "class" SimpleName + : modifiers ("class" | "trait") SimpleName typeParameters? - ("wraps" valueParameters? | modifiers valueParameters?)? + modifiers ("(" primaryConstructorParameter{","} ")")? (":" annotations delegationSpecifier{","})? typeConstraints (classBody? | enumClassBody) diff --git a/grammar/src/lexical.grm b/grammar/src/lexical.grm index 9780cce228c..e62dbe96728 100644 --- a/grammar/src/lexical.grm +++ b/grammar/src/lexical.grm @@ -115,17 +115,15 @@ ref try Soft: -wraps -- in a class header where -- in class, function and type headers by -- in a class header (Delegation specifier) -lazy -- in a property/parameter declaration get, set -- in a property definition import +final abstract -virtual enum open -attribute +annotation override private public diff --git a/grammar/src/modifiers.grm b/grammar/src/modifiers.grm index c56bfa8a28f..0944c0e2c9b 100644 --- a/grammar/src/modifiers.grm +++ b/grammar/src/modifiers.grm @@ -17,7 +17,7 @@ modifier classModifier : "abstract" - : "virtual" + : "final" : "enum" : "open" : "attribute" @@ -25,7 +25,8 @@ classModifier memberModifier : "override" - : "virtual" + : "open" + : "final" : "abstract" ; diff --git a/idea/src/jet/Library.jet b/idea/src/jet/Library.jet index dd9231edeb7..41bbd9ae238 100644 --- a/idea/src/jet/Library.jet +++ b/idea/src/jet/Library.jet @@ -40,12 +40,12 @@ fun Any?.equals(other : Any?) : Boolean// = this === other // Returns "null" for null fun Any?.toString() : String// = this === other -trait class Iterator { +trait Iterator { fun next() : T abstract fun hasNext() : Boolean } -trait class Iterable { +trait Iterable { fun iterator() : Iterator } @@ -56,11 +56,11 @@ class Array(val size : Int) { fun iterator() : Iterator } -trait class Comparable { +trait Comparable { fun compareTo(other : T) : Int } -trait class Hashable { +trait Hashable { fun hashCode() : Int fun equals(other : Any?) : Boolean } @@ -92,7 +92,7 @@ class String() : Comparable { fun trim(): String } -trait class Range> { +trait Range> { fun contains(item : T) : Boolean } diff --git a/idea/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java b/idea/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java index 6dab128813c..402b5c83597 100644 --- a/idea/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java +++ b/idea/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java @@ -34,9 +34,9 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme private final ClassKind kind; private JetType superclassType; - public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope outerScope) { - this(trace, containingDeclaration, outerScope, ClassKind.CLASS); - } +// public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope outerScope) { +// this(trace, containingDeclaration, outerScope, ClassKind.CLASS); +// } public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope outerScope, ClassKind kind) { super(containingDeclaration); diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 7c2a7accf53..2da63a0e2d6 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -20,7 +20,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create( INTEGER_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, OPEN_QUOTE, RAW_STRING_LITERAL, - NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, + NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, NULL_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, @@ -79,6 +79,7 @@ public class JetExpressionParsing extends AbstractJetParsing { LBRACKET, // attribute FUN_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, + TRAIT_KEYWORD, CLASS_KEYWORD, TYPE_KEYWORD ), @@ -1236,7 +1237,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private JetNodeType parseLocalDeclarationRest(boolean isEnum) { IElementType keywordToken = tt(); JetNodeType declType = null; - if (keywordToken == CLASS_KEYWORD) { + if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD) { declType = myJetParsing.parseClass(isEnum); } else if (keywordToken == FUN_KEYWORD) { diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 67b1913eea5..d412746d08d 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -28,13 +28,13 @@ public class JetParsing extends AbstractJetParsing { } } - private static final TokenSet TOPLEVEL_OBJECT_FIRST = TokenSet.create(TYPE_KEYWORD, CLASS_KEYWORD, + private static final TokenSet TOPLEVEL_OBJECT_FIRST = TokenSet.create(TYPE_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD, FUN_KEYWORD, VAL_KEYWORD, NAMESPACE_KEYWORD); - private static final TokenSet ENUM_MEMBER_FIRST = TokenSet.create(TYPE_KEYWORD, CLASS_KEYWORD, + private static final TokenSet ENUM_MEMBER_FIRST = TokenSet.create(TYPE_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD, FUN_KEYWORD, VAL_KEYWORD, IDENTIFIER); - private static final TokenSet CLASS_NAME_RECOVERY_SET = TokenSet.orSet(TokenSet.create(LT, WRAPS_KEYWORD, LPAR, COLON, LBRACE), TOPLEVEL_OBJECT_FIRST); - private static final TokenSet TYPE_PARAMETER_GT_RECOVERY_SET = TokenSet.create(WHERE_KEYWORD, WRAPS_KEYWORD, LPAR, COLON, LBRACE, GT); + private static final TokenSet CLASS_NAME_RECOVERY_SET = TokenSet.orSet(TokenSet.create(LT, LPAR, COLON, LBRACE), TOPLEVEL_OBJECT_FIRST); + private static final TokenSet TYPE_PARAMETER_GT_RECOVERY_SET = TokenSet.create(WHERE_KEYWORD, LPAR, COLON, LBRACE, GT); private static final TokenSet PARAMETER_NAME_RECOVERY_SET = TokenSet.create(COLON, EQ, COMMA, RPAR); private static final TokenSet NAMESPACE_NAME_RECOVERY_SET = TokenSet.create(DOT, EOL_OR_SEMICOLON); /*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, FUN_KEYWORD, LPAR, CAPITALIZED_THIS_KEYWORD); @@ -227,7 +227,7 @@ public class JetParsing extends AbstractJetParsing { if (keywordToken == NAMESPACE_KEYWORD) { declType = parseNamespaceBlock(); } - else if (keywordToken == CLASS_KEYWORD) { + else if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD) { declType = parseClass(detector.isDetected()); } else if (keywordToken == FUN_KEYWORD) { @@ -404,36 +404,28 @@ public class JetParsing extends AbstractJetParsing { /* * class - * : modifiers "class" SimpleName + * : modifiers ("class" | "trait") SimpleName * typeParameters? - * ( - * ("wraps" "(" primaryConstructorParameter{","} ")") | - * (modifiers "(" primaryConstructorParameter{","} ")"))? + * modifiers ("(" primaryConstructorParameter{","} ")")? * (":" attributes delegationSpecifier{","})? * typeConstraints * (classBody? | enumClassBody) * ; */ public JetNodeType parseClass(boolean enumClass) { - assert _at(CLASS_KEYWORD); - advance(); // CLASS_KEYWORD + assert _atSet(CLASS_KEYWORD, TRAIT_KEYWORD); + advance(); // CLASS_KEYWORD or TRAIT_KEYWORD expect(IDENTIFIER, "Class name expected", CLASS_NAME_RECOVERY_SET); boolean typeParametersDeclared = parseTypeParameterList(TYPE_PARAMETER_GT_RECOVERY_SET); - if (at(WRAPS_KEYWORD)) { - advance(); // WRAPS_KEYWORD + if (parseModifierList(PRIMARY_CONSTRUCTOR_MODIFIER_LIST, false)) { parseValueParameterList(false, TokenSet.create(COLON, LBRACE)); } else { - if (parseModifierList(PRIMARY_CONSTRUCTOR_MODIFIER_LIST, false)) { + if (at(LPAR)) { parseValueParameterList(false, TokenSet.create(COLON, LBRACE)); } - else { - if (at(LPAR)) { - parseValueParameterList(false, TokenSet.create(COLON, LBRACE)); - } - } } if (at(COLON)) { @@ -601,8 +593,11 @@ public class JetParsing extends AbstractJetParsing { declType = parseClass(isEnum); } } + else if (keywordToken == TRAIT_KEYWORD) { + declType = parseClass(isEnum); + } else if (keywordToken == FUN_KEYWORD) { - declType = parseFunction(); + declType = parseFunction(); } else if (keywordToken == VAL_KEYWORD || keywordToken == VAR_KEYWORD) { declType = parseProperty(); diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClass.java b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java index 1b859f92c3d..2433e1c17b4 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetClass.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -5,6 +5,7 @@ import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; +import org.jetbrains.jet.lexer.JetTokens; import java.util.Collections; import java.util.List; @@ -114,4 +115,8 @@ public class JetClass extends JetTypeParameterListOwner implements JetClassOrObj } return getName(); } + + public boolean isTrait() { + return findChildByType(JetTokens.TRAIT_KEYWORD) != null; + } } diff --git a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java index 0829a8045e7..e7907de6ad0 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java @@ -694,7 +694,7 @@ public class ClassDescriptorResolver { ); trace.record(BindingContext.CONSTRUCTOR, declarationToTrace, constructorDescriptor); if (modifierList != null) { - modifierList.checkNotContains(trace, JetTokens.ABSTRACT_KEYWORD, JetTokens.VIRTUAL_KEYWORD, JetTokens.OVERRIDE_KEYWORD); + modifierList.checkNotContains(trace, JetTokens.ABSTRACT_KEYWORD, JetTokens.OPEN_KEYWORD, JetTokens.OVERRIDE_KEYWORD, JetTokens.FINAL_KEYWORD); } return constructorDescriptor.initialize( typeParameters, diff --git a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 20c39e71474..47a45e24fde 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -167,7 +167,7 @@ public class TopDownAnalyzer { @Override public void visitClass(JetClass klass) { - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(trace, owner, outerScope); + MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(trace, owner, outerScope, getClassKind(klass)); if (klass.hasModifier(JetTokens.ENUM_KEYWORD)) { MutableClassDescriptor classObjectDescriptor = new MutableClassDescriptor(trace, mutableClassDescriptor, outerScope, ClassKind.OBJECT); @@ -201,7 +201,7 @@ public class TopDownAnalyzer { classes.put(enumEntry, classDescriptor); } else { - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(trace, classObjectDescriptor, outerScope); + MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(trace, classObjectDescriptor, outerScope, ClassKind.CLASS); // TODO : Special kind for enum entry classes? visitClassOrObject( enumEntry, (Map) classes, @@ -267,6 +267,14 @@ public class TopDownAnalyzer { } } + @NotNull + private ClassKind getClassKind(@NotNull JetClass jetClass) { + if (jetClass.isTrait()) return ClassKind.TRAIT; + if (jetClass.hasModifier(JetTokens.ANNOTATION_KEYWORD)) return ClassKind.ANNOTATION_CLASS; + if (jetClass.hasModifier(JetTokens.ENUM_KEYWORD)) return ClassKind.ENUM_CLASS; + return ClassKind.CLASS; + } + private void processImports(@NotNull JetNamespace namespace, @NotNull WriteThroughScope namespaceScope, @NotNull JetScope outerScope) { List importDirectives = namespace.getImportDirectives(); for (JetImportDirective importDirective : importDirectives) { diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index 2f40c693df6..0a56229d911 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -164,6 +164,7 @@ LONG_TEMPLATE_ENTRY_END=\} "while" { return JetTokens.WHILE_KEYWORD ;} "break" { return JetTokens.BREAK_KEYWORD ;} "class" { return JetTokens.CLASS_KEYWORD ;} +"trait" { return JetTokens.TRAIT_KEYWORD ;} "throw" { return JetTokens.THROW_KEYWORD ;} "false" { return JetTokens.FALSE_KEYWORD ;} "when" { return JetTokens.WHEN_KEYWORD ;} diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index ace4d6c4c1b..496bf89ad0f 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -119,17 +119,15 @@ public interface JetTokens { JetToken COMMA = new JetToken("COMMA"); JetToken EOL_OR_SEMICOLON = new JetToken("EOL_OR_SEMICOLON"); - JetKeywordToken WRAPS_KEYWORD = JetKeywordToken.softKeyword("wraps"); JetKeywordToken IMPORT_KEYWORD = JetKeywordToken.softKeyword("import"); JetKeywordToken WHERE_KEYWORD = JetKeywordToken.softKeyword("where"); JetKeywordToken BY_KEYWORD = JetKeywordToken.softKeyword("by"); JetKeywordToken GET_KEYWORD = JetKeywordToken.softKeyword("get"); JetKeywordToken SET_KEYWORD = JetKeywordToken.softKeyword("set"); JetKeywordToken ABSTRACT_KEYWORD = JetKeywordToken.softKeyword("abstract"); - JetKeywordToken VIRTUAL_KEYWORD = JetKeywordToken.softKeyword("virtual"); JetKeywordToken ENUM_KEYWORD = JetKeywordToken.softKeyword("enum"); JetKeywordToken OPEN_KEYWORD = JetKeywordToken.softKeyword("open"); - JetKeywordToken ATTRIBUTE_KEYWORD = JetKeywordToken.softKeyword("attribute"); + JetKeywordToken ANNOTATION_KEYWORD = JetKeywordToken.softKeyword("annotation"); JetKeywordToken OVERRIDE_KEYWORD = JetKeywordToken.softKeyword("override"); JetKeywordToken PRIVATE_KEYWORD = JetKeywordToken.softKeyword("private"); JetKeywordToken PUBLIC_KEYWORD = JetKeywordToken.softKeyword("public"); @@ -144,23 +142,23 @@ public interface JetTokens { // TODO: support this as an annotation on arguments. Then, they it probably can not be a soft keyword JetKeywordToken REF_KEYWORD = JetKeywordToken.softKeyword("ref"); - TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, + TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, TRAIT_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, 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, TRAIT_KEYWORD + NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD, AS_SAFE ); - TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD, - SET_KEYWORD, ABSTRACT_KEYWORD, VIRTUAL_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ATTRIBUTE_KEYWORD, + TokenSet SOFT_KEYWORDS = TokenSet.create(IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD, + SET_KEYWORD, ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ANNOTATION_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, CATCH_KEYWORD, FINALLY_KEYWORD, REF_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD ); - TokenSet MODIFIER_KEYWORDS = TokenSet.create(ABSTRACT_KEYWORD, VIRTUAL_KEYWORD, ENUM_KEYWORD, - OPEN_KEYWORD, ATTRIBUTE_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, + TokenSet MODIFIER_KEYWORDS = TokenSet.create(ABSTRACT_KEYWORD, ENUM_KEYWORD, + OPEN_KEYWORD, ANNOTATION_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, REF_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD ); TokenSet WHITE_SPACE_OR_COMMENT_BIT_SET = TokenSet.create(WHITE_SPACE, BLOCK_COMMENT, EOL_COMMENT, DOC_COMMENT); diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index 21527660d1d..2c8e40a8f8f 100644 --- a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 7/12/11 9:55 PM */ +/* The following code was generated by JFlex 1.4.3 on 9/9/11 2:48 PM */ /* It's an automatically generated code. Do not modify it. */ package org.jetbrains.jet.lexer; @@ -14,7 +14,7 @@ import org.jetbrains.jet.lexer.JetTokens; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 7/12/11 9:55 PM from the specification file + * on 9/9/11 2:48 PM from the specification file * /Users/abreslav/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -44,70 +44,70 @@ class _JetLexer implements FlexLexer { "\11\0\1\3\1\13\1\0\1\3\23\0\1\3\1\60\1\25\1\77"+ "\1\7\1\70\1\65\1\23\1\73\1\74\1\12\1\62\1\76\1\21"+ "\1\17\1\11\1\14\11\1\1\67\1\75\1\63\1\57\1\64\1\61"+ - "\1\10\1\2\1\16\2\2\1\20\1\2\5\4\1\4\3\4\1\22"+ - "\3\4\1\54\3\4\1\15\2\4\1\71\1\24\1\72\1\0\1\4"+ - "\1\6\1\31\1\44\1\36\1\56\1\33\1\52\1\4\1\47\1\41"+ - "\1\45\1\51\1\50\1\32\1\30\1\37\1\35\1\4\1\43\1\34"+ - "\1\40\1\42\1\55\1\46\1\15\1\53\1\4\1\26\1\66\1\27"+ - "\54\0\1\4\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4"+ - "\1\0\u013f\4\31\0\162\4\4\0\14\4\16\0\5\4\11\0\1\4"+ - "\213\0\1\4\13\0\1\4\1\0\3\4\1\0\1\4\1\0\24\4"+ - "\1\0\54\4\1\0\46\4\1\0\5\4\4\0\202\4\10\0\105\4"+ - "\1\0\46\4\2\0\2\4\6\0\20\4\41\0\46\4\2\0\1\4"+ - "\7\0\47\4\110\0\33\4\5\0\3\4\56\0\32\4\5\0\13\4"+ - "\25\0\12\5\4\0\2\4\1\0\143\4\1\0\1\4\17\0\2\4"+ - "\7\0\2\4\12\5\3\4\2\0\1\4\20\0\1\4\1\0\36\4"+ - "\35\0\3\4\60\0\46\4\13\0\1\4\u0152\0\66\4\3\0\1\4"+ - "\22\0\1\4\7\0\12\4\4\0\12\5\25\0\10\4\2\0\2\4"+ - "\2\0\26\4\1\0\7\4\1\0\1\4\3\0\4\4\3\0\1\4"+ - "\36\0\2\4\1\0\3\4\4\0\12\5\2\4\23\0\6\4\4\0"+ - "\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0\2\4\1\0"+ - "\2\4\37\0\4\4\1\0\1\4\7\0\12\5\2\0\3\4\20\0"+ - "\11\4\1\0\3\4\1\0\26\4\1\0\7\4\1\0\2\4\1\0"+ - "\5\4\3\0\1\4\22\0\1\4\17\0\2\4\4\0\12\5\25\0"+ - "\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0"+ - "\5\4\3\0\1\4\36\0\2\4\1\0\3\4\4\0\12\5\1\0"+ - "\1\4\21\0\1\4\1\0\6\4\3\0\3\4\1\0\4\4\3\0"+ - "\2\4\1\0\1\4\1\0\2\4\3\0\2\4\3\0\3\4\3\0"+ - "\10\4\1\0\3\4\55\0\11\5\25\0\10\4\1\0\3\4\1\0"+ - "\27\4\1\0\12\4\1\0\5\4\46\0\2\4\4\0\12\5\25\0"+ - "\10\4\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0"+ - "\1\4\40\0\1\4\1\0\2\4\4\0\12\5\25\0\10\4\1\0"+ - "\3\4\1\0\27\4\1\0\20\4\46\0\2\4\4\0\12\5\25\0"+ - "\22\4\3\0\30\4\1\0\11\4\1\0\1\4\2\0\7\4\72\0"+ - "\60\4\1\0\2\4\14\0\7\4\11\0\12\5\47\0\2\4\1\0"+ - "\1\4\2\0\2\4\1\0\1\4\2\0\1\4\6\0\4\4\1\0"+ - "\7\4\1\0\3\4\1\0\1\4\1\0\1\4\2\0\2\4\1\0"+ - "\4\4\1\0\2\4\11\0\1\4\2\0\5\4\1\0\1\4\11\0"+ - "\12\5\2\0\2\4\42\0\1\4\37\0\12\5\26\0\10\4\1\0"+ - "\42\4\35\0\4\4\164\0\42\4\1\0\5\4\1\0\2\4\25\0"+ - "\12\5\6\0\6\4\112\0\46\4\12\0\51\4\7\0\132\4\5\0"+ - "\104\4\5\0\122\4\6\0\7\4\1\0\77\4\1\0\1\4\1\0"+ - "\4\4\2\0\7\4\1\0\1\4\1\0\4\4\2\0\47\4\1\0"+ - "\1\4\1\0\4\4\2\0\37\4\1\0\1\4\1\0\4\4\2\0"+ - "\7\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\7\4\1\0"+ - "\27\4\1\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0"+ - "\47\4\1\0\23\4\16\0\11\5\56\0\125\4\14\0\u026c\4\2\0"+ - "\10\4\12\0\32\4\5\0\113\4\25\0\15\4\1\0\4\4\16\0"+ - "\22\4\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4\43\0"+ - "\1\4\4\0\1\4\3\0\12\5\46\0\12\5\6\0\130\4\10\0"+ - "\51\4\127\0\35\4\51\0\12\5\36\4\2\0\5\4\u038b\0\154\4"+ - "\224\0\234\4\4\0\132\4\6\0\26\4\2\0\6\4\2\0\46\4"+ - "\2\0\6\4\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4"+ - "\1\0\37\4\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4"+ - "\1\0\7\4\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4"+ - "\1\0\7\4\164\0\1\4\15\0\1\4\202\0\1\4\4\0\1\4"+ - "\2\0\12\4\1\0\1\4\3\0\5\4\6\0\1\4\1\0\1\4"+ - "\1\0\1\4\1\0\4\4\1\0\3\4\1\0\7\4\3\0\3\4"+ - "\5\0\5\4\u0ebb\0\2\4\52\0\5\4\5\0\2\4\4\0\126\4"+ - "\6\0\3\4\1\0\132\4\1\0\4\4\5\0\50\4\4\0\136\4"+ - "\21\0\30\4\70\0\20\4\u0200\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4"+ - "\u0773\0\u2ba4\4\u215c\0\u012e\4\2\0\73\4\225\0\7\4\14\0\5\4"+ - "\5\0\1\4\1\0\12\4\1\0\15\4\1\0\5\4\1\0\1\4"+ - "\1\0\2\4\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4"+ - "\2\0\66\4\50\0\14\4\164\0\5\4\1\0\207\4\23\0\12\5"+ - "\7\0\32\4\6\0\32\4\13\0\131\4\3\0\6\4\2\0\6\4"+ - "\2\0\6\4\2\0\3\4\43\0"; + "\1\10\1\2\1\16\2\2\1\20\1\2\11\4\1\22\3\4\1\54"+ + "\3\4\1\15\2\4\1\71\1\24\1\72\1\0\1\4\1\6\1\31"+ + "\1\44\1\36\1\56\1\33\1\52\1\4\1\47\1\41\1\45\1\51"+ + "\1\50\1\32\1\30\1\37\1\35\1\4\1\43\1\34\1\40\1\42"+ + "\1\55\1\46\1\15\1\53\1\4\1\26\1\66\1\27\54\0\1\4"+ + "\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4\1\0\u013f\4"+ + "\31\0\162\4\4\0\14\4\16\0\5\4\11\0\1\4\213\0\1\4"+ + "\13\0\1\4\1\0\3\4\1\0\1\4\1\0\24\4\1\0\54\4"+ + "\1\0\46\4\1\0\5\4\4\0\202\4\10\0\105\4\1\0\46\4"+ + "\2\0\2\4\6\0\20\4\41\0\46\4\2\0\1\4\7\0\47\4"+ + "\110\0\33\4\5\0\3\4\56\0\32\4\5\0\13\4\25\0\12\5"+ + "\4\0\2\4\1\0\143\4\1\0\1\4\17\0\2\4\7\0\2\4"+ + "\12\5\3\4\2\0\1\4\20\0\1\4\1\0\36\4\35\0\3\4"+ + "\60\0\46\4\13\0\1\4\u0152\0\66\4\3\0\1\4\22\0\1\4"+ + "\7\0\12\4\4\0\12\5\25\0\10\4\2\0\2\4\2\0\26\4"+ + "\1\0\7\4\1\0\1\4\3\0\4\4\3\0\1\4\36\0\2\4"+ + "\1\0\3\4\4\0\12\5\2\4\23\0\6\4\4\0\2\4\2\0"+ + "\26\4\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4\37\0"+ + "\4\4\1\0\1\4\7\0\12\5\2\0\3\4\20\0\11\4\1\0"+ + "\3\4\1\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4\3\0"+ + "\1\4\22\0\1\4\17\0\2\4\4\0\12\5\25\0\10\4\2\0"+ + "\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4\3\0"+ + "\1\4\36\0\2\4\1\0\3\4\4\0\12\5\1\0\1\4\21\0"+ + "\1\4\1\0\6\4\3\0\3\4\1\0\4\4\3\0\2\4\1\0"+ + "\1\4\1\0\2\4\3\0\2\4\3\0\3\4\3\0\10\4\1\0"+ + "\3\4\55\0\11\5\25\0\10\4\1\0\3\4\1\0\27\4\1\0"+ + "\12\4\1\0\5\4\46\0\2\4\4\0\12\5\25\0\10\4\1\0"+ + "\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4\40\0"+ + "\1\4\1\0\2\4\4\0\12\5\25\0\10\4\1\0\3\4\1\0"+ + "\27\4\1\0\20\4\46\0\2\4\4\0\12\5\25\0\22\4\3\0"+ + "\30\4\1\0\11\4\1\0\1\4\2\0\7\4\72\0\60\4\1\0"+ + "\2\4\14\0\7\4\11\0\12\5\47\0\2\4\1\0\1\4\2\0"+ + "\2\4\1\0\1\4\2\0\1\4\6\0\4\4\1\0\7\4\1\0"+ + "\3\4\1\0\1\4\1\0\1\4\2\0\2\4\1\0\4\4\1\0"+ + "\2\4\11\0\1\4\2\0\5\4\1\0\1\4\11\0\12\5\2\0"+ + "\2\4\42\0\1\4\37\0\12\5\26\0\10\4\1\0\42\4\35\0"+ + "\4\4\164\0\42\4\1\0\5\4\1\0\2\4\25\0\12\5\6\0"+ + "\6\4\112\0\46\4\12\0\51\4\7\0\132\4\5\0\104\4\5\0"+ + "\122\4\6\0\7\4\1\0\77\4\1\0\1\4\1\0\4\4\2\0"+ + "\7\4\1\0\1\4\1\0\4\4\2\0\47\4\1\0\1\4\1\0"+ + "\4\4\2\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0"+ + "\1\4\1\0\4\4\2\0\7\4\1\0\7\4\1\0\27\4\1\0"+ + "\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\47\4\1\0"+ + "\23\4\16\0\11\5\56\0\125\4\14\0\u026c\4\2\0\10\4\12\0"+ + "\32\4\5\0\113\4\25\0\15\4\1\0\4\4\16\0\22\4\16\0"+ + "\22\4\16\0\15\4\1\0\3\4\17\0\64\4\43\0\1\4\4\0"+ + "\1\4\3\0\12\5\46\0\12\5\6\0\130\4\10\0\51\4\127\0"+ + "\35\4\51\0\12\5\36\4\2\0\5\4\u038b\0\154\4\224\0\234\4"+ + "\4\0\132\4\6\0\26\4\2\0\6\4\2\0\46\4\2\0\6\4"+ + "\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4"+ + "\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4"+ + "\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4"+ + "\164\0\1\4\15\0\1\4\202\0\1\4\4\0\1\4\2\0\12\4"+ + "\1\0\1\4\3\0\5\4\6\0\1\4\1\0\1\4\1\0\1\4"+ + "\1\0\4\4\1\0\3\4\1\0\7\4\3\0\3\4\5\0\5\4"+ + "\u0ebb\0\2\4\52\0\5\4\5\0\2\4\4\0\126\4\6\0\3\4"+ + "\1\0\132\4\1\0\4\4\5\0\50\4\4\0\136\4\21\0\30\4"+ + "\70\0\20\4\u0200\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4\u0773\0\u2ba4\4"+ + "\u215c\0\u012e\4\2\0\73\4\225\0\7\4\14\0\5\4\5\0\1\4"+ + "\1\0\12\4\1\0\15\4\1\0\5\4\1\0\1\4\1\0\2\4"+ + "\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4\2\0\66\4"+ + "\50\0\14\4\164\0\5\4\1\0\207\4\23\0\12\5\7\0\32\4"+ + "\6\0\32\4\13\0\131\4\3\0\6\4\2\0\6\4\2\0\6\4"+ + "\2\0\3\4\43\0"; /** * Translates characters to character classes @@ -132,16 +132,16 @@ class _JetLexer implements FlexLexer { "\1\0\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+ "\1\75\1\76\1\77\1\100\1\0\1\101\1\102\1\0"+ "\1\103\1\43\1\3\2\0\1\50\1\104\4\0\1\105"+ - "\2\3\1\106\5\3\1\107\10\3\1\110\1\111\1\3"+ + "\2\3\1\106\6\3\1\107\10\3\1\110\1\111\1\3"+ "\1\112\1\113\1\114\1\115\1\116\1\117\1\0\1\40"+ "\1\44\1\45\1\0\2\104\1\43\2\0\1\3\1\120"+ - "\1\121\3\3\1\122\1\123\1\3\1\124\2\3\1\125"+ + "\1\121\4\3\1\122\1\123\1\3\1\124\2\3\1\125"+ "\2\3\1\126\1\100\1\50\2\0\2\3\1\127\1\3"+ - "\1\130\1\3\1\131\1\132\1\133\1\105\2\3\1\134"+ - "\1\135\3\3\1\136\1\137"; + "\1\130\1\131\1\3\1\132\1\133\1\134\1\105\2\3"+ + "\1\135\1\136\3\3\1\137\1\140"; private static int [] zzUnpackAction() { - int [] result = new int[210]; + int [] result = new int[213]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -183,19 +183,19 @@ class _JetLexer implements FlexLexer { "\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u1480\0\u14c0"+ "\0\u0100\0\u0100\0\u1500\0\u0100\0\u1540\0\u0100\0\u1580\0\u15c0"+ "\0\u1600\0\u1640\0\u1680\0\u16c0\0\u1700\0\u1740\0\u1780\0\u17c0"+ - "\0\u1800\0\u0100\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u0180"+ - "\0\u1980\0\u19c0\0\u1a00\0\u1a40\0\u1a80\0\u1ac0\0\u1b00\0\u1b40"+ - "\0\u0180\0\u0180\0\u1b80\0\u0180\0\u0180\0\u0100\0\u0100\0\u0100"+ - "\0\u0100\0\u1bc0\0\u0100\0\u0100\0\u0100\0\u1c00\0\u1c40\0\u0100"+ - "\0\u1c80\0\u1540\0\u1cc0\0\u1d00\0\u0180\0\u0180\0\u1d40\0\u1d80"+ - "\0\u1dc0\0\u0180\0\u0180\0\u1e00\0\u0180\0\u1e40\0\u1e80\0\u0180"+ - "\0\u1ec0\0\u1f00\0\u0180\0\u0100\0\u0100\0\u1f40\0\u1f80\0\u1fc0"+ - "\0\u2000\0\u0180\0\u2040\0\u0180\0\u2080\0\u0180\0\u0180\0\u0180"+ - "\0\u0100\0\u20c0\0\u2100\0\u0180\0\u0180\0\u2140\0\u2180\0\u21c0"+ - "\0\u0180\0\u0180"; + "\0\u1800\0\u0100\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980"+ + "\0\u0180\0\u19c0\0\u1a00\0\u1a40\0\u1a80\0\u1ac0\0\u1b00\0\u1b40"+ + "\0\u1b80\0\u0180\0\u0180\0\u1bc0\0\u0180\0\u0180\0\u0100\0\u0100"+ + "\0\u0100\0\u0100\0\u1c00\0\u0100\0\u0100\0\u0100\0\u1c40\0\u1c80"+ + "\0\u0100\0\u1cc0\0\u1540\0\u1d00\0\u1d40\0\u0180\0\u0180\0\u1d80"+ + "\0\u1dc0\0\u1e00\0\u1e40\0\u0180\0\u0180\0\u1e80\0\u0180\0\u1ec0"+ + "\0\u1f00\0\u0180\0\u1f40\0\u1f80\0\u0180\0\u0100\0\u0100\0\u1fc0"+ + "\0\u2000\0\u2040\0\u2080\0\u0180\0\u20c0\0\u0180\0\u0180\0\u2100"+ + "\0\u0180\0\u0180\0\u0180\0\u0100\0\u2140\0\u2180\0\u0180\0\u0180"+ + "\0\u21c0\0\u2200\0\u2240\0\u0180\0\u0180"; private static int [] zzUnpackRowMap() { - int [] result = new int[210]; + int [] result = new int[213]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -315,110 +315,114 @@ class _JetLexer implements FlexLexer { "\5\0\1\7\1\215\25\7\22\0\2\7\1\0\2\7"+ "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\15\7"+ "\1\216\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\12\7\1\217\10\7"+ - "\1\220\3\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\11\7\1\221\1\7"+ - "\1\222\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\5\7\1\223\21\7"+ + "\1\0\1\7\1\0\1\7\5\0\1\7\1\217\10\7"+ + "\1\220\10\7\1\221\3\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\11\7"+ + "\1\222\1\7\1\223\13\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\5\7"+ + "\1\224\21\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\10\7\1\225\16\7"+ "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\5\0\10\7\1\224\16\7\22\0\2\7"+ + "\1\0\1\7\5\0\3\7\1\226\23\7\22\0\2\7"+ "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\5\0\3\7\1\225\23\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\3\7"+ - "\1\226\5\7\1\227\15\7\22\0\2\7\1\0\2\7"+ + "\5\0\3\7\1\227\5\7\1\230\15\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\5\0\20\7\1\231\6\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\13\7"+ + "\1\232\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\1\233\26\7\22\0"+ + "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ + "\1\7\5\0\11\7\1\234\15\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ + "\13\7\1\235\4\7\1\236\6\7\100\0\1\237\50\0"+ + "\1\240\3\0\1\241\122\0\1\242\21\0\2\167\1\0"+ + "\2\167\6\0\3\167\1\0\1\167\1\0\1\167\5\0"+ + "\27\167\23\0\1\243\1\0\1\243\10\0\2\243\1\0"+ + "\1\243\1\0\1\243\5\0\27\243\22\0\2\173\1\0"+ + "\2\173\1\244\5\0\3\173\1\0\1\173\1\0\1\173"+ + "\5\0\27\173\22\0\1\175\12\0\1\175\64\0\2\177"+ + "\1\0\2\177\1\245\5\0\3\177\1\0\1\177\1\0"+ + "\1\177\5\0\27\177\22\0\2\200\1\0\2\200\1\246"+ + "\5\0\3\200\1\0\1\200\1\0\1\200\5\0\27\200"+ + "\21\0\12\201\1\247\65\201\11\250\1\251\1\202\65\250"+ + "\1\0\1\114\12\0\1\114\64\0\2\252\11\0\1\252"+ + "\1\0\1\252\1\174\1\252\10\0\1\252\1\0\1\252"+ + "\2\0\1\252\5\0\1\252\5\0\1\252\3\0\1\252"+ + "\22\0\1\175\12\0\1\175\4\0\1\253\40\0\1\253"+ + "\34\0\1\174\60\0\25\207\1\254\52\207\1\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\5\0\3\7\1\255\23\7\22\0\2\7\1\0\2\7"+ "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\20\7"+ - "\1\230\6\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\13\7\1\231\13\7"+ + "\1\256\6\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\3\7\1\257\23\7"+ "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\5\0\1\232\26\7\22\0\2\7\1\0"+ - "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ - "\11\7\1\233\15\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\5\0\13\7\1\234"+ - "\4\7\1\235\6\7\100\0\1\236\50\0\1\237\3\0"+ - "\1\240\122\0\1\241\21\0\2\167\1\0\2\167\6\0"+ - "\3\167\1\0\1\167\1\0\1\167\5\0\27\167\23\0"+ - "\1\242\1\0\1\242\10\0\2\242\1\0\1\242\1\0"+ - "\1\242\5\0\27\242\22\0\2\173\1\0\2\173\1\243"+ - "\5\0\3\173\1\0\1\173\1\0\1\173\5\0\27\173"+ - "\22\0\1\175\12\0\1\175\64\0\2\177\1\0\2\177"+ - "\1\244\5\0\3\177\1\0\1\177\1\0\1\177\5\0"+ - "\27\177\22\0\2\200\1\0\2\200\1\245\5\0\3\200"+ - "\1\0\1\200\1\0\1\200\5\0\27\200\21\0\12\201"+ - "\1\246\65\201\11\247\1\250\1\202\65\247\1\0\1\114"+ - "\12\0\1\114\64\0\2\251\11\0\1\251\1\0\1\251"+ - "\1\174\1\251\10\0\1\251\1\0\1\251\2\0\1\251"+ - "\5\0\1\251\5\0\1\251\3\0\1\251\22\0\1\175"+ - "\12\0\1\175\4\0\1\252\40\0\1\252\34\0\1\174"+ - "\60\0\25\207\1\253\52\207\1\0\2\7\1\0\2\7"+ + "\1\0\1\7\5\0\10\7\1\260\16\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\5\0\4\7\1\261\22\7\22\0\2\7\1\0\2\7"+ "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\3\7"+ - "\1\254\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\20\7\1\255\6\7"+ + "\1\262\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\11\7\1\263\15\7"+ "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\5\0\3\7\1\256\23\7\22\0\2\7"+ + "\1\0\1\7\5\0\3\7\1\264\23\7\22\0\2\7"+ "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\5\0\10\7\1\257\16\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\4\7"+ - "\1\260\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\3\7\1\261\23\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\5\0\3\7\1\262\23\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\5\0\4\7\1\263\22\7\22\0\2\7\1\0\2\7"+ + "\5\0\4\7\1\265\22\7\22\0\2\7\1\0\2\7"+ "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\7\7"+ - "\1\264\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\3\7\1\265\23\7"+ + "\1\266\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\3\7\1\267\23\7"+ "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\5\0\12\7\1\266\14\7\22\0\2\7"+ + "\1\0\1\7\5\0\12\7\1\270\14\7\22\0\2\7"+ "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\5\0\1\7\1\267\25\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\1\270"+ + "\5\0\1\7\1\271\25\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\1\272"+ "\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\5\0\20\7\1\271\6\7\22\0"+ + "\1\7\1\0\1\7\5\0\20\7\1\273\6\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\4\7\1\272\22\7\22\0\2\7\1\0"+ + "\1\7\5\0\4\7\1\274\22\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ - "\4\7\1\273\22\7\22\0\2\242\1\0\2\242\1\274"+ - "\5\0\3\242\1\0\1\242\1\0\1\242\5\0\27\242"+ - "\21\0\11\201\1\275\1\246\65\201\12\247\1\276\65\247"+ - "\1\0\2\251\11\0\1\251\1\0\1\251\1\0\1\251"+ - "\1\0\1\205\6\0\1\251\1\0\1\251\1\0\1\205"+ - "\1\251\5\0\1\251\5\0\1\251\3\0\1\251\21\0"+ - "\25\207\1\277\52\207\1\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\5\0\4\7\1\300"+ + "\4\7\1\275\22\7\22\0\2\243\1\0\2\243\1\276"+ + "\5\0\3\243\1\0\1\243\1\0\1\243\5\0\27\243"+ + "\21\0\11\201\1\277\1\247\65\201\12\250\1\300\65\250"+ + "\1\0\2\252\11\0\1\252\1\0\1\252\1\0\1\252"+ + "\1\0\1\205\6\0\1\252\1\0\1\252\1\0\1\205"+ + "\1\252\5\0\1\252\5\0\1\252\3\0\1\252\21\0"+ + "\25\207\1\301\52\207\1\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\5\0\4\7\1\302"+ "\22\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\5\0\11\7\1\301\15\7\22\0"+ + "\1\7\1\0\1\7\5\0\11\7\1\303\15\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\4\7\1\302\22\7\22\0\2\7\1\0"+ + "\1\7\5\0\4\7\1\304\22\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ - "\6\7\1\303\20\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\5\0\16\7\1\304"+ - "\10\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\5\0\13\7\1\305\13\7\22\0"+ + "\6\7\1\305\20\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\5\0\10\7\1\306"+ + "\16\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\5\0\16\7\1\307\10\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\21\7\1\306\5\7\22\0\2\7\1\0"+ + "\1\7\5\0\13\7\1\310\13\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ - "\3\7\1\307\23\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\5\0\3\7\1\310"+ - "\23\7\21\0\11\247\1\250\1\276\65\247\25\207\1\311"+ - "\52\207\1\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\5\0\5\7\1\312\21\7\22\0"+ + "\21\7\1\311\5\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\5\0\3\7\1\312"+ + "\23\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\5\0\3\7\1\313\23\7\21\0"+ + "\11\250\1\251\1\300\65\250\25\207\1\314\52\207\1\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\1\313\26\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\5\0\10\7"+ - "\1\314\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\5\0\1\315\26\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\1\7\1\316\25\7\22\0\2\7\1\0"+ + "\1\7\5\0\5\7\1\315\21\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ - "\12\7\1\317\14\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\5\0\6\7\1\320"+ - "\20\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\5\0\3\7\1\321\23\7\22\0"+ + "\1\316\26\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\5\0\10\7\1\317\16\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\5\0\1\320\26\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ + "\1\7\1\321\25\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\5\0\12\7\1\322"+ + "\14\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\5\0\6\7\1\323\20\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\5\0\3\7\1\322\23\7\21\0"; + "\1\7\5\0\3\7\1\324\23\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+ + "\3\7\1\325\23\7\21\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8704]; + int [] result = new int[8832]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -464,12 +468,12 @@ class _JetLexer implements FlexLexer { "\1\1\1\0\1\1\1\0\1\1\1\0\1\11\2\1"+ "\2\11\4\1\5\11\1\1\1\0\27\1\1\11\1\0"+ "\1\1\11\11\1\1\1\0\2\11\1\0\1\11\1\1"+ - "\1\11\2\0\2\1\4\0\3\1\1\11\23\1\4\11"+ - "\1\0\3\11\1\0\1\1\1\11\1\1\2\0\20\1"+ - "\2\11\2\0\11\1\1\11\11\1"; + "\1\11\2\0\2\1\4\0\3\1\1\11\24\1\4\11"+ + "\1\0\3\11\1\0\1\1\1\11\1\1\2\0\21\1"+ + "\2\11\2\0\12\1\1\11\11\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[210]; + int [] result = new int[213]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -578,7 +582,7 @@ class _JetLexer implements FlexLexer { char [] map = new char[0x10000]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 1330) { + while (i < 1326) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); @@ -803,23 +807,23 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 96: break; + case 97: break; case 11: { pushState(STRING); return JetTokens.OPEN_QUOTE; } - case 97: break; + case 98: break; case 72: { return JetTokens.FOR_KEYWORD ; } - case 98: break; - case 93: + case 99: break; + case 94: { return JetTokens.RETURN_KEYWORD ; } - case 99: break; + case 100: break; case 80: { return JetTokens.NULL_KEYWORD ; } - case 100: break; + case 101: break; case 34: { if (lBraceCount == 0) { popState(); @@ -828,365 +832,369 @@ class _JetLexer implements FlexLexer { lBraceCount--; return JetTokens.RBRACE; } - case 101: break; + case 102: break; case 18: { return JetTokens.LT ; } - case 102: break; + case 103: break; case 51: { return JetTokens.DO_KEYWORD ; } - case 103: break; + case 104: break; case 17: { return JetTokens.PLUS ; } - case 104: break; + case 105: break; case 69: { return JetTokens.RAW_STRING_LITERAL; } - case 105: break; + case 106: break; case 57: { return JetTokens.PLUSEQ ; } - case 106: break; + case 107: break; case 27: { return JetTokens.COMMA ; } - case 107: break; + case 108: break; case 19: { return JetTokens.GT ; } - case 108: break; + case 109: break; case 4: { return JetTokens.WHITE_SPACE; } - case 109: break; + case 110: break; case 25: { return JetTokens.RPAR ; } - case 110: break; + case 111: break; case 53: { return JetTokens.DOUBLE_ARROW; } - case 111: break; + case 112: break; case 82: { return JetTokens.TRUE_KEYWORD ; } - case 112: break; + case 113: break; case 36: { return JetTokens.FIELD_IDENTIFIER; } - case 113: break; + case 114: break; case 61: { return JetTokens.ANDAND ; } - case 114: break; + case 115: break; case 65: { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; } - case 115: break; + case 116: break; case 68: { return JetTokens.DOC_COMMENT; } - case 116: break; + case 117: break; case 35: { return JetTokens.FLOAT_LITERAL; } - case 117: break; + case 118: break; case 39: { return JetTokens.EOL_COMMENT; } - case 118: break; + case 119: break; case 85: { return JetTokens.WHEN_KEYWORD ; } - case 119: break; + case 120: break; case 20: { return JetTokens.COLON ; } - case 120: break; + case 121: break; case 59: { return JetTokens.LTEQ ; } - case 121: break; + case 122: break; case 46: { return JetTokens.ARROW ; } - case 122: break; + case 123: break; case 32: { popState(); return JetTokens.IDENTIFIER; } - case 123: break; + case 124: break; case 22: { return JetTokens.LBRACKET ; } - case 124: break; + case 125: break; case 67: { yypushback(2); return JetTokens.INTEGER_LITERAL; } - case 125: break; + case 126: break; case 10: { return JetTokens.CHARACTER_LITERAL; } - case 126: break; + case 127: break; case 74: { return JetTokens.VAR_KEYWORD ; } - case 127: break; + case 128: break; case 60: { return JetTokens.GTEQ ; } - case 128: break; + case 129: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 129: break; + case 130: break; case 13: { return JetTokens.RBRACE ; } - case 130: break; + case 131: break; case 87: { return JetTokens.CLASS_KEYWORD ; } - case 131: break; + case 132: break; case 15: { return JetTokens.EXCL ; } - case 132: break; + case 133: break; case 71: { return JetTokens.TRY_KEYWORD ; } - case 133: break; + case 134: break; case 54: { return JetTokens.EXCLEQ ; } - case 134: break; + case 135: break; case 45: { return JetTokens.MINUSEQ ; } - case 135: break; - case 88: + case 136: break; + case 89: { return JetTokens.THROW_KEYWORD ; } - case 136: break; - case 90: + case 137: break; + case 91: { return JetTokens.WHILE_KEYWORD ; } - case 137: break; + case 138: break; case 44: { return JetTokens.MINUSMINUS; } - case 138: break; - case 94: + case 139: break; + case 95: { return JetTokens.CONTINUE_KEYWORD ; } - case 139: break; + case 140: break; case 77: { return JetTokens.NOT_IN; } - case 140: break; + case 141: break; case 38: { return JetTokens.ATAT ; } - case 141: break; + case 142: break; case 6: { return JetTokens.DIV ; } - case 142: break; + case 143: break; case 56: { return JetTokens.ELVIS ; } - case 143: break; + case 144: break; case 37: { return JetTokens.LABEL_IDENTIFIER; } - case 144: break; + case 145: break; case 29: { return JetTokens.REGULAR_STRING_PART; } - case 145: break; + case 146: break; case 16: { return JetTokens.QUEST ; } - case 146: break; + case 147: break; case 62: { return JetTokens.OROR ; } - case 147: break; + case 148: break; case 21: { return JetTokens.PERC ; } - case 148: break; + case 149: break; case 79: { return JetTokens.EXCLEQEQEQ; } - case 149: break; + case 150: break; case 63: { return JetTokens.PERCEQ ; } - case 150: break; + case 151: break; case 43: { return JetTokens.RANGE ; } - case 151: break; + case 152: break; case 1: { return TokenType.BAD_CHARACTER; } - case 152: break; + case 153: break; case 55: { return JetTokens.SAFE_ACCESS; } - case 153: break; - case 95: + case 154: break; + case 96: { return JetTokens.NAMESPACE_KEYWORD ; } - case 154: break; + case 155: break; case 78: { return JetTokens.NOT_IS; } - case 155: break; + case 156: break; case 7: { return JetTokens.MUL ; } - case 156: break; + case 157: break; case 23: { return JetTokens.RBRACKET ; } - case 157: break; + case 158: break; case 58: { return JetTokens.PLUSPLUS ; } - case 158: break; + case 159: break; case 83: { return JetTokens.THIS_KEYWORD ; } - case 159: break; + case 160: break; case 8: { return JetTokens.DOT ; } - case 160: break; + case 161: break; case 26: { return JetTokens.SEMICOLON ; } - case 161: break; + case 162: break; case 50: { return JetTokens.IF_KEYWORD ; } - case 162: break; + case 163: break; case 66: { return JetTokens.ESCAPE_SEQUENCE; } - case 163: break; + case 164: break; case 31: { popState(); return JetTokens.CLOSING_QUOTE; } - case 164: break; + case 165: break; case 14: { return JetTokens.EQ ; } - case 165: break; + case 166: break; case 5: { return JetTokens.AT ; } - case 166: break; + case 167: break; case 70: { return JetTokens.AS_SAFE; } - case 167: break; + case 168: break; case 24: { return JetTokens.LPAR ; } - case 168: break; + case 169: break; case 9: { return JetTokens.MINUS ; } - case 169: break; - case 91: + case 170: break; + case 92: { return JetTokens.FALSE_KEYWORD ; } - case 170: break; + case 171: break; case 84: { return JetTokens.TYPE_KEYWORD ; } - case 171: break; + case 172: break; case 73: { return JetTokens.FUN_KEYWORD ; } - case 172: break; + case 173: break; case 49: { return JetTokens.IS_KEYWORD ; } - case 173: break; + case 174: break; case 30: { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; } - case 174: break; + case 175: break; case 33: { lBraceCount++; return JetTokens.LBRACE; } - case 175: break; + case 176: break; case 41: { return JetTokens.DIVEQ ; } - case 176: break; + case 177: break; case 81: { return JetTokens.ELSE_KEYWORD ; } - case 177: break; + case 178: break; case 47: { return JetTokens.AS_KEYWORD ; } - case 178: break; + case 179: break; case 48: { return JetTokens.IN_KEYWORD ; } - case 179: break; + case 180: break; case 52: { return JetTokens.EQEQ ; } - case 180: break; + case 181: break; case 76: { return JetTokens.EQEQEQ ; } - case 181: break; + case 182: break; case 75: { return JetTokens.VAL_KEYWORD ; } - case 182: break; + case 183: break; case 86: { return JetTokens.CAPITALIZED_THIS_KEYWORD ; } - case 183: break; + case 184: break; case 42: { return JetTokens.MULTEQ ; } - case 184: break; + case 185: break; case 64: { pushState(SHORT_TEMPLATE_ENTRY); yypushback(yylength() - 1); return JetTokens.SHORT_TEMPLATE_ENTRY_START; } - case 185: break; + case 186: break; case 12: { return JetTokens.LBRACE ; } - case 186: break; - case 92: + case 187: break; + case 93: { return JetTokens.OBJECT_KEYWORD ; } - case 187: break; - case 89: + case 188: break; + case 90: { return JetTokens.BREAK_KEYWORD ; } - case 188: break; + case 189: break; case 40: { return JetTokens.BLOCK_COMMENT; } - case 189: break; + case 190: break; + case 88: + { return JetTokens.TRAIT_KEYWORD ; + } + case 191: break; case 28: { return JetTokens.HASH ; } - case 190: break; + case 192: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java index 170f536f6cb..96b42decbf5 100644 --- a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java +++ b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java @@ -54,12 +54,10 @@ public class JetPsiChecker implements Annotator { if (reference instanceof MultiRangeReference) { MultiRangeReference mrr = (MultiRangeReference) reference; for (TextRange range : mrr.getRanges()) { - System.out.println("Unresolved1"); holder.createErrorAnnotation(range.shiftRight(referenceExpression.getTextOffset()), "Unresolved").setHighlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL); } } else { - System.out.println("Unresolved2"); holder.createErrorAnnotation(referenceExpression, "Unresolved").setHighlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL); } } @@ -80,8 +78,9 @@ public class JetPsiChecker implements Annotator { PsiElement declarationPsiElement = bindingContext.get(BindingContext.DESCRIPTOR_TO_DECLARATION, redeclaration); if (declarationPsiElement instanceof JetNamedDeclaration) { PsiElement nameIdentifier = ((JetNamedDeclaration) declarationPsiElement).getNameIdentifier(); - assert nameIdentifier != null : declarationPsiElement.getText() + " has nameIdentifier 'null'"; - holder.createErrorAnnotation(nameIdentifier, "Redeclaration"); + if (nameIdentifier != null) { + holder.createErrorAnnotation(nameIdentifier, "Redeclaration"); + } } else if (declarationPsiElement != null) { holder.createErrorAnnotation(declarationPsiElement, "Redeclaration"); @@ -100,8 +99,6 @@ public class JetPsiChecker implements Annotator { }; if (errorReportingEnabled) { - System.out.println("Checked: " + bindingContext.getDiagnostics().size()); - System.out.println(Thread.currentThread().getId()); AnalyzingUtils.applyHandler(errorHandler, bindingContext); } diff --git a/idea/src/org/jetbrains/jet/resolve/DescriptorRenderer.java b/idea/src/org/jetbrains/jet/resolve/DescriptorRenderer.java index f66fc6773e9..31653945c8a 100644 --- a/idea/src/org/jetbrains/jet/resolve/DescriptorRenderer.java +++ b/idea/src/org/jetbrains/jet/resolve/DescriptorRenderer.java @@ -251,7 +251,7 @@ public class DescriptorRenderer { @Override public Void visitClassDescriptor(ClassDescriptor descriptor, StringBuilder builder) { - String keyword = descriptor.getKind() == ClassKind.TRAIT ? "trait class" : "class"; + String keyword = descriptor.getKind() == ClassKind.TRAIT ? "trait" : "class"; renderClassDescriptor(descriptor, builder, keyword); return super.visitClassDescriptor(descriptor, builder); } diff --git a/idea/testData/checker/Abstract.jet b/idea/testData/checker/Abstract.jet index e91ffe9735d..771ab3e0bc3 100644 --- a/idea/testData/checker/Abstract.jet +++ b/idea/testData/checker/Abstract.jet @@ -14,7 +14,7 @@ abstract class MyAbstractClass() { abstract fun j() {} } -trait class MyTrait { +trait MyTrait { fun f() fun g() {} abstract fun h() diff --git a/idea/testData/checker/MultipleBounds.jet b/idea/testData/checker/MultipleBounds.jet index 3caff264ca5..2ecb95b9e6e 100644 --- a/idea/testData/checker/MultipleBounds.jet +++ b/idea/testData/checker/MultipleBounds.jet @@ -4,7 +4,7 @@ open class A() { fun foo() : Int = 1 } -trait class B { +trait B { fun bar() : Double = 1.0; } diff --git a/idea/testData/checker/Objects.jet b/idea/testData/checker/Objects.jet index 512fa6a0485..a619e1c22d6 100644 --- a/idea/testData/checker/Objects.jet +++ b/idea/testData/checker/Objects.jet @@ -1,6 +1,6 @@ namespace toplevelObjectDeclarations { open class Foo(y : Int) { - virtual fun foo() : Int = 1 + open fun foo() : Int = 1 } class T : Foo {} diff --git a/idea/testData/checker/SupertypeListChecks.jet b/idea/testData/checker/SupertypeListChecks.jet index a2dcbe1e40f..b040428ec85 100644 --- a/idea/testData/checker/SupertypeListChecks.jet +++ b/idea/testData/checker/SupertypeListChecks.jet @@ -17,25 +17,25 @@ open class C2 {} open class C3 {} -trait class T1 {} +trait T1 {} -trait class T2 {} +trait T2 {} -trait class Test() { +trait Test() { this(x : Int) {} } -trait class Test1 : C2() {} +trait Test1 : C2() {} -trait class Test2 : C2 {} +trait Test2 : C2 {} -trait class Test3 : C2, C3 {} +trait Test3 : C2, C3 {} -trait class Test4 : T1 {} +trait Test4 : T1 {} -trait class Test5 : T1, T1 {} +trait Test5 : T1, T1 {} -trait class Test6 : C1 {} +trait Test6 : C1 {} class CTest1() : OC1() {} diff --git a/idea/testData/checker/TraitSupertypeList.jet b/idea/testData/checker/TraitSupertypeList.jet index 3aa451d6557..37e17339fec 100644 --- a/idea/testData/checker/TraitSupertypeList.jet +++ b/idea/testData/checker/TraitSupertypeList.jet @@ -1,10 +1,10 @@ open class bar() -trait open class Foo() : bar(), bar, bar { +trait Foo() : bar(), bar, bar { this(x : Int) {} } -trait open class Foo2 : bar, Foo { +trait Foo2 : bar, Foo { } open class Foo1() : bar(), bar, Foo, Foo() {} diff --git a/idea/testData/checker/regression/OverrideResolution.jet b/idea/testData/checker/regression/OverrideResolution.jet index d912130a4e0..b58ac616160 100644 --- a/idea/testData/checker/regression/OverrideResolution.jet +++ b/idea/testData/checker/regression/OverrideResolution.jet @@ -4,7 +4,7 @@ fun box() { } open class A { - virtual fun foo() {} + open fun foo() {} } open class B : A { diff --git a/idea/testData/codegen/bridge.jet b/idea/testData/codegen/bridge.jet index e6f0e1a66a2..4efc72ba09e 100644 --- a/idea/testData/codegen/bridge.jet +++ b/idea/testData/codegen/bridge.jet @@ -1,7 +1,7 @@ import java.lang.Integer open class C { - virtual fun f(): Any = "C f" + open fun f(): Any = "C f" } class D() : C { diff --git a/idea/testData/codegen/classes/diamondInheritance.jet b/idea/testData/codegen/classes/diamondInheritance.jet index 5f4d1c3f29a..210aecafedc 100644 --- a/idea/testData/codegen/classes/diamondInheritance.jet +++ b/idea/testData/codegen/classes/diamondInheritance.jet @@ -5,7 +5,7 @@ open class Base() { } open class Left() : Base() {} -trait class Right : Base {} +trait Right : Base {} class D() : Left(), Right diff --git a/idea/testData/codegen/classes/funDelegation.jet b/idea/testData/codegen/classes/funDelegation.jet index 25f2acc796d..10a1f408b09 100644 --- a/idea/testData/codegen/classes/funDelegation.jet +++ b/idea/testData/codegen/classes/funDelegation.jet @@ -2,7 +2,7 @@ open class Base() { fun n(n : Int) : Int = n + 1 } -trait class Abstract {} +trait Abstract {} class Derived1() : Base(), Abstract {} class Derived2() : Abstract, Base() {} diff --git a/idea/testData/codegen/classes/inheritance.jet b/idea/testData/codegen/classes/inheritance.jet index 164971fe30f..6903e41e63d 100644 --- a/idea/testData/codegen/classes/inheritance.jet +++ b/idea/testData/codegen/classes/inheritance.jet @@ -1,7 +1,7 @@ // Changed when traits were introduced. May not make sense any more open class X(val x : Int) {} -trait class Y { +trait Y { abstract val y : Int } @@ -11,7 +11,7 @@ class Point(x : Int, yy : Int) : X(x) , Y { override val y : Int = yy } -trait class Abstract {} +trait Abstract {} class P1(x : Int, yy : Y) : Abstract, X(x), Y by yy {} class P2(x : Int, yy : Y) : X(x), Abstract, Y by yy {} diff --git a/idea/testData/codegen/classes/propertyDelegation.jet b/idea/testData/codegen/classes/propertyDelegation.jet index 3f9a5646b91..0d030e74a8a 100644 --- a/idea/testData/codegen/classes/propertyDelegation.jet +++ b/idea/testData/codegen/classes/propertyDelegation.jet @@ -10,7 +10,7 @@ open class Base() { } } -trait class Abstract {} +trait Abstract {} class Derived1() : Base(), Abstract {} class Derived2() : Abstract, Base() {} diff --git a/idea/testData/codegen/classes/rightHandOverride.jet b/idea/testData/codegen/classes/rightHandOverride.jet index eda09d25be6..e99e60bd863 100644 --- a/idea/testData/codegen/classes/rightHandOverride.jet +++ b/idea/testData/codegen/classes/rightHandOverride.jet @@ -1,8 +1,8 @@ // Changed when traits were introduced. May not make sense any more -trait class Left {} +trait Left {} open class Right() { - virtual fun f() = 42 + open fun f() = 42 } class D() : Left, Right() { diff --git a/idea/testData/psi/Attributes.jet b/idea/testData/psi/Attributes.jet index 1302b343c9d..321691b72dc 100644 --- a/idea/testData/psi/Attributes.jet +++ b/idea/testData/psi/Attributes.jet @@ -1,12 +1,12 @@ namespace foo.bar.goo abstract -virtual +open enum open -attribute +annotation override -virtual +open abstract private protected @@ -19,15 +19,15 @@ in out ref class Bar { val abstract - val virtual + val open val enum val open - val attribute + val annotation val override - val virtual + val open val abstract val private val protected diff --git a/idea/testData/psi/SimpleModifiers.txt b/idea/testData/psi/SimpleModifiers.txt index 9e29a05a5c6..aca1212c64b 100644 --- a/idea/testData/psi/SimpleModifiers.txt +++ b/idea/testData/psi/SimpleModifiers.txt @@ -13,17 +13,17 @@ JetFile: SimpleModifiers.jet MODIFIER_LIST PsiElement(abstract)('abstract') PsiWhiteSpace('\n') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n') PsiElement(enum)('enum') PsiWhiteSpace('\n') PsiElement(open)('open') PsiWhiteSpace('\n') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n') PsiElement(override)('override') PsiWhiteSpace('\n') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n') PsiElement(abstract)('abstract') PsiWhiteSpace('\n') @@ -50,17 +50,17 @@ JetFile: SimpleModifiers.jet MODIFIER_LIST PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(enum)('enum') PsiWhiteSpace('\n ') PsiElement(open)('open') PsiWhiteSpace('\n ') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n ') PsiElement(override)('override') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') @@ -92,7 +92,7 @@ JetFile: SimpleModifiers.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') @@ -107,7 +107,7 @@ JetFile: SimpleModifiers.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') @@ -117,7 +117,7 @@ JetFile: SimpleModifiers.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') diff --git a/idea/testData/psi/SoftKeywords.jet b/idea/testData/psi/SoftKeywords.jet index 20e52c05e89..829934a583a 100644 --- a/idea/testData/psi/SoftKeywords.jet +++ b/idea/testData/psi/SoftKeywords.jet @@ -4,12 +4,12 @@ import foo public protected private internal abstract -virtual +open enum open -attribute +annotation override -virtual +open abstract private protected @@ -18,27 +18,27 @@ internal in out ref - class Bar wraps (a : B) : A by b { + > (a : B) : A by b { public protected private internal val abstract - val virtual + val open val enum val open - val attribute + val annotation val override - val virtual + val open val abstract val private val protected @@ -61,12 +61,12 @@ ref public protected private internal fun abstract () : abstract - fun virtual () : virtual + fun open () : open fun enum () : enum fun open () : open - fun attribute () : attribute + fun annotation () : annotation fun override () : override - fun virtual () : virtual + fun open () : open fun abstract () : abstract fun private () : private fun protected () : protected @@ -86,12 +86,12 @@ ref fun test( abstract : t, - virtual : t, + open : t, enum : t, open : t, - attribute : t, + annotation : t, override : t, - virtual : t, + open : t, abstract : t, private : t, protected : t, @@ -109,12 +109,12 @@ ref protected : t, internal : t, public protected private internal abstract - virtual + open enum open - attribute + annotation override - virtual + open abstract private protected @@ -128,12 +128,12 @@ ref class F(val foo : bar, abstract : t, - virtual : t, + open : t, enum : t, open : t, - attribute : t, + annotation : t, override : t, - virtual : t, + open : t, abstract : t, private : t, protected : t, @@ -151,12 +151,12 @@ class F(val foo : bar, protected : t, internal : t, public protected private internal abstract - virtual + open enum open - attribute + annotation override - virtual + open abstract private protected diff --git a/idea/testData/psi/SoftKeywords.txt b/idea/testData/psi/SoftKeywords.txt index 68aaec1fd2f..eb76e1c326c 100644 --- a/idea/testData/psi/SoftKeywords.txt +++ b/idea/testData/psi/SoftKeywords.txt @@ -27,17 +27,17 @@ JetFile: SoftKeywords.jet PsiWhiteSpace('\n') PsiElement(abstract)('abstract') PsiWhiteSpace('\n') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n') PsiElement(enum)('enum') PsiWhiteSpace('\n') PsiElement(open)('open') PsiWhiteSpace('\n') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n') PsiElement(override)('override') PsiWhiteSpace('\n') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n') PsiElement(abstract)('abstract') PsiWhiteSpace('\n') @@ -82,7 +82,7 @@ JetFile: SoftKeywords.jet MODIFIER_LIST PsiElement(out)('out') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') TYPE_PARAMETER @@ -97,17 +97,17 @@ JetFile: SoftKeywords.jet PsiWhiteSpace(' ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(enum)('enum') PsiWhiteSpace('\n ') PsiElement(open)('open') PsiWhiteSpace('\n ') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n ') PsiElement(override)('override') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') @@ -123,8 +123,6 @@ JetFile: SoftKeywords.jet PsiWhiteSpace('\n ') PsiElement(GT)('>') PsiWhiteSpace(' ') - PsiElement(wraps)('wraps') - PsiWhiteSpace(' ') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER @@ -172,7 +170,7 @@ JetFile: SoftKeywords.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') @@ -187,7 +185,7 @@ JetFile: SoftKeywords.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') @@ -197,7 +195,7 @@ JetFile: SoftKeywords.jet PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') @@ -336,7 +334,7 @@ JetFile: SoftKeywords.jet FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') @@ -347,7 +345,7 @@ JetFile: SoftKeywords.jet TYPE_REFERENCE USER_TYPE REFERENCE_EXPRESSION - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') FUN PsiElement(fun)('fun') @@ -384,7 +382,7 @@ JetFile: SoftKeywords.jet FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace(' ') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') @@ -395,7 +393,7 @@ JetFile: SoftKeywords.jet TYPE_REFERENCE USER_TYPE REFERENCE_EXPRESSION - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace('\n ') FUN PsiElement(fun)('fun') @@ -416,7 +414,7 @@ JetFile: SoftKeywords.jet FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') @@ -427,7 +425,7 @@ JetFile: SoftKeywords.jet TYPE_REFERENCE USER_TYPE REFERENCE_EXPRESSION - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace('\n ') FUN PsiElement(fun)('fun') @@ -704,7 +702,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -737,7 +735,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -759,7 +757,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -957,17 +955,17 @@ JetFile: SoftKeywords.jet PsiWhiteSpace(' ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(enum)('enum') PsiWhiteSpace('\n ') PsiElement(open)('open') PsiWhiteSpace('\n ') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n ') PsiElement(override)('override') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') @@ -1025,7 +1023,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -1058,7 +1056,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('attribute') + PsiElement(IDENTIFIER)('annotation') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -1080,7 +1078,7 @@ JetFile: SoftKeywords.jet PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER - PsiElement(IDENTIFIER)('virtual') + PsiElement(IDENTIFIER)('open') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') @@ -1278,17 +1276,17 @@ JetFile: SoftKeywords.jet PsiWhiteSpace(' ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(enum)('enum') PsiWhiteSpace('\n ') PsiElement(open)('open') PsiWhiteSpace('\n ') - PsiElement(attribute)('attribute') + PsiElement(annotation)('annotation') PsiWhiteSpace('\n ') PsiElement(override)('override') PsiWhiteSpace('\n ') - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace('\n ') PsiElement(abstract)('abstract') PsiWhiteSpace('\n ') diff --git a/idea/testData/psi/examples/BitArith.jet b/idea/testData/psi/examples/BitArith.jet index 39c56be06c7..3bd6f14fa8a 100644 --- a/idea/testData/psi/examples/BitArith.jet +++ b/idea/testData/psi/examples/BitArith.jet @@ -21,7 +21,7 @@ fun countOnes(x : INumber) = if (x == 0) 0 else mostSignificantBit(x) + countOne fun Int.matchMask(mask : Int) = this and mask == mask -virtual class INumber : IComparable { +open class INumber : IComparable { val bits : Int [operator] fun plus(other : This) : This [operator] fun shl(bits : Int) : This diff --git a/idea/testData/psi/examples/BitArith.txt b/idea/testData/psi/examples/BitArith.txt index 827bdff7a10..dba6f016498 100644 --- a/idea/testData/psi/examples/BitArith.txt +++ b/idea/testData/psi/examples/BitArith.txt @@ -515,7 +515,7 @@ JetFile: BitArith.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/IPushPop.jet b/idea/testData/psi/examples/IPushPop.jet index 09b1f2d8267..84725423fdc 100644 --- a/idea/testData/psi/examples/IPushPop.jet +++ b/idea/testData/psi/examples/IPushPop.jet @@ -1,4 +1,4 @@ -virtual class IPushPop { +open class IPushPop { val isEmpty : Boolean fun push(item : T) fun pop() : T diff --git a/idea/testData/psi/examples/IPushPop.txt b/idea/testData/psi/examples/IPushPop.txt index 8aba5674908..ba028b8aa59 100644 --- a/idea/testData/psi/examples/IPushPop.txt +++ b/idea/testData/psi/examples/IPushPop.txt @@ -2,7 +2,7 @@ JetFile: IPushPop.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/PolymorphicClassObjects.jet b/idea/testData/psi/examples/PolymorphicClassObjects.jet index b296741e0db..fefa5d52ea4 100644 --- a/idea/testData/psi/examples/PolymorphicClassObjects.jet +++ b/idea/testData/psi/examples/PolymorphicClassObjects.jet @@ -1,9 +1,9 @@ -virtual class Builder { +open class Builder { [operator] fun plusAssign(item : E) fun result() : R } -virtual class Buildable { +open class Buildable { fun newBuilder() : Builder } diff --git a/idea/testData/psi/examples/PolymorphicClassObjects.txt b/idea/testData/psi/examples/PolymorphicClassObjects.txt index f4f39ba0580..0ecb4dce0fe 100644 --- a/idea/testData/psi/examples/PolymorphicClassObjects.txt +++ b/idea/testData/psi/examples/PolymorphicClassObjects.txt @@ -2,7 +2,7 @@ JetFile: PolymorphicClassObjects.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -67,7 +67,7 @@ JetFile: PolymorphicClassObjects.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/array/MutableArray.jet b/idea/testData/psi/examples/array/MutableArray.jet index 311279c875c..cb270fa33a8 100644 --- a/idea/testData/psi/examples/array/MutableArray.jet +++ b/idea/testData/psi/examples/array/MutableArray.jet @@ -2,11 +2,11 @@ These declarations are "shallow" in the sense that they are not really compiled, only the type-checker uses them */ -virtual class ReadOnlyArray : ISized { +open class ReadOnlyArray : ISized { [operator] fun get(index : Int) : T } -virtual class WriteOnlyArray : ISized { // This is needed to keep IIterator's covariant +open class WriteOnlyArray : ISized { // This is needed to keep IIterator's covariant [operator] fun set(index : Int, value : T) } diff --git a/idea/testData/psi/examples/array/MutableArray.txt b/idea/testData/psi/examples/array/MutableArray.txt index 9d0f964dcfa..daa31179dbd 100644 --- a/idea/testData/psi/examples/array/MutableArray.txt +++ b/idea/testData/psi/examples/array/MutableArray.txt @@ -4,7 +4,7 @@ JetFile: MutableArray.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -69,7 +69,7 @@ JetFile: MutableArray.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/HashMap.jet b/idea/testData/psi/examples/collections/HashMap.jet index 03b4bfc1563..6243ee41618 100644 --- a/idea/testData/psi/examples/collections/HashMap.jet +++ b/idea/testData/psi/examples/collections/HashMap.jet @@ -1,27 +1,27 @@ -virtual class IEquality { +open class IEquality { fun equals(other : Any) : Boolean = (this as java.lang.Object).equals(other as java.lang.Object) } -virtual class IHashable : IEquality { +open class IHashable : IEquality { val hashCode : Integer get() = (this as java.lang.Object).hashCode() } -virtual class IMap { +open class IMap { fun get(key : K) : V fun set(key : K, value : V) : V fun remove(key : K) : V fun containsKey(key : K) : Boolean } -class HashableWrapper wraps (val obj : Any) : IHashable +class HashableWrapper(val obj : Any) : IHashable // equals and hashCode implementations are inherited [inline] fun Any.hashable() : HashableWrapper = HashableWrapper(this) -virtual class IHashingStrategy { +open class IHashingStrategy { fun equals(a : K, b : K) : Boolean fun hashCode(a : K) : Integer } diff --git a/idea/testData/psi/examples/collections/HashMap.txt b/idea/testData/psi/examples/collections/HashMap.txt index fa4d6ace61f..4b00e65faa7 100644 --- a/idea/testData/psi/examples/collections/HashMap.txt +++ b/idea/testData/psi/examples/collections/HashMap.txt @@ -2,7 +2,7 @@ JetFile: HashMap.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -95,7 +95,7 @@ JetFile: HashMap.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -170,7 +170,7 @@ JetFile: HashMap.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -301,11 +301,8 @@ JetFile: HashMap.jet PsiElement(class)('class') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('HashableWrapper') - PsiWhiteSpace(' ') TYPE_PARAMETER_LIST - PsiElement(wraps)('wraps') - PsiWhiteSpace(' ') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER @@ -378,7 +375,7 @@ JetFile: HashMap.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IIterable.jet b/idea/testData/psi/examples/collections/IIterable.jet index 5e69296338c..c9a55af4058 100644 --- a/idea/testData/psi/examples/collections/IIterable.jet +++ b/idea/testData/psi/examples/collections/IIterable.jet @@ -1,3 +1,3 @@ -virtual class IIterable { +open class IIterable { fun iterator() : IIterator } diff --git a/idea/testData/psi/examples/collections/IIterable.txt b/idea/testData/psi/examples/collections/IIterable.txt index fba44fb97b1..8b426629e5a 100644 --- a/idea/testData/psi/examples/collections/IIterable.txt +++ b/idea/testData/psi/examples/collections/IIterable.txt @@ -2,7 +2,7 @@ JetFile: IIterable.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IIterator.jet b/idea/testData/psi/examples/collections/IIterator.jet index faeb4d40a5c..1739eae7a01 100644 --- a/idea/testData/psi/examples/collections/IIterator.jet +++ b/idea/testData/psi/examples/collections/IIterator.jet @@ -1,4 +1,4 @@ -virtual class IIterator { +open class IIterator { fun next() : T val hasNext : Boolean diff --git a/idea/testData/psi/examples/collections/IIterator.txt b/idea/testData/psi/examples/collections/IIterator.txt index aad40e0df47..a11d81c631e 100644 --- a/idea/testData/psi/examples/collections/IIterator.txt +++ b/idea/testData/psi/examples/collections/IIterator.txt @@ -2,7 +2,7 @@ JetFile: IIterator.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IList.jet b/idea/testData/psi/examples/collections/IList.jet index 6daa67bac0f..69fff05ca87 100644 --- a/idea/testData/psi/examples/collections/IList.jet +++ b/idea/testData/psi/examples/collections/IList.jet @@ -1,4 +1,4 @@ -virtual class IList : IIterable, ISized { +open class IList : IIterable, ISized { [operator] fun get(index : Int) : T val isEmpty : Boolean } \ No newline at end of file diff --git a/idea/testData/psi/examples/collections/IList.txt b/idea/testData/psi/examples/collections/IList.txt index e27ab630e52..36ff6a29f39 100644 --- a/idea/testData/psi/examples/collections/IList.txt +++ b/idea/testData/psi/examples/collections/IList.txt @@ -2,7 +2,7 @@ JetFile: IList.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IMutableIterable.jet b/idea/testData/psi/examples/collections/IMutableIterable.jet index 22b6e017d8e..1ad49e2aec9 100644 --- a/idea/testData/psi/examples/collections/IMutableIterable.jet +++ b/idea/testData/psi/examples/collections/IMutableIterable.jet @@ -1,3 +1,3 @@ -virtual class IMutableIterable : IIterable { +open class IMutableIterable : IIterable { fun mutableIterator() : IMutableIterator } \ No newline at end of file diff --git a/idea/testData/psi/examples/collections/IMutableIterable.txt b/idea/testData/psi/examples/collections/IMutableIterable.txt index 14d939be026..4e443c5ca4b 100644 --- a/idea/testData/psi/examples/collections/IMutableIterable.txt +++ b/idea/testData/psi/examples/collections/IMutableIterable.txt @@ -2,7 +2,7 @@ JetFile: IMutableIterable.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IMutableIterator.jet b/idea/testData/psi/examples/collections/IMutableIterator.jet index 51111049926..1449ab40dca 100644 --- a/idea/testData/psi/examples/collections/IMutableIterator.jet +++ b/idea/testData/psi/examples/collections/IMutableIterator.jet @@ -1,4 +1,4 @@ -virtual class IMutableIterator : IIterator { +open class IMutableIterator : IIterator { fun remove() : T /* diff --git a/idea/testData/psi/examples/collections/IMutableIterator.txt b/idea/testData/psi/examples/collections/IMutableIterator.txt index 1014211edea..4a92a5971d5 100644 --- a/idea/testData/psi/examples/collections/IMutableIterator.txt +++ b/idea/testData/psi/examples/collections/IMutableIterator.txt @@ -2,7 +2,7 @@ JetFile: IMutableIterator.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IMutableList.jet b/idea/testData/psi/examples/collections/IMutableList.jet index 711f0d6bfc7..55fd048e7a7 100644 --- a/idea/testData/psi/examples/collections/IMutableList.jet +++ b/idea/testData/psi/examples/collections/IMutableList.jet @@ -1,4 +1,4 @@ -virtual class IMutableList : IList, IMutableIterable { +open class IMutableList : IList, IMutableIterable { fun set(index : Int, value : T) : T fun add(index : Int, value : T) fun remove(index : Int) : T diff --git a/idea/testData/psi/examples/collections/IMutableList.txt b/idea/testData/psi/examples/collections/IMutableList.txt index ec023e54ba4..0fce42fbf1f 100644 --- a/idea/testData/psi/examples/collections/IMutableList.txt +++ b/idea/testData/psi/examples/collections/IMutableList.txt @@ -2,7 +2,7 @@ JetFile: IMutableList.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/IMutableSet.jet b/idea/testData/psi/examples/collections/IMutableSet.jet index eacb0d740ec..95eb05d2456 100644 --- a/idea/testData/psi/examples/collections/IMutableSet.jet +++ b/idea/testData/psi/examples/collections/IMutableSet.jet @@ -1,4 +1,4 @@ -virtual class IMutableSet : ISet, IMutableIterable { +open class IMutableSet : ISet, IMutableIterable { fun add(item : T) : Boolean fun remove(item : T) : Boolean } \ No newline at end of file diff --git a/idea/testData/psi/examples/collections/IMutableSet.txt b/idea/testData/psi/examples/collections/IMutableSet.txt index 50c295b41c5..82c94b8ff19 100644 --- a/idea/testData/psi/examples/collections/IMutableSet.txt +++ b/idea/testData/psi/examples/collections/IMutableSet.txt @@ -2,7 +2,7 @@ JetFile: IMutableSet.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/ISet.jet b/idea/testData/psi/examples/collections/ISet.jet index bfe2753b8df..0b6741470fd 100644 --- a/idea/testData/psi/examples/collections/ISet.jet +++ b/idea/testData/psi/examples/collections/ISet.jet @@ -1,3 +1,3 @@ -virtual class ISet : IIterable, ISized { +open class ISet : IIterable, ISized { fun contains(item : T) : Boolean } diff --git a/idea/testData/psi/examples/collections/ISet.txt b/idea/testData/psi/examples/collections/ISet.txt index 11afd7dc48d..f1736c73dee 100644 --- a/idea/testData/psi/examples/collections/ISet.txt +++ b/idea/testData/psi/examples/collections/ISet.txt @@ -2,7 +2,7 @@ JetFile: ISet.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/ISized.jet b/idea/testData/psi/examples/collections/ISized.jet index 9f12cb218b0..5e5977f253e 100644 --- a/idea/testData/psi/examples/collections/ISized.jet +++ b/idea/testData/psi/examples/collections/ISized.jet @@ -1,3 +1,3 @@ -virtual class ISized { +open class ISized { val size : Int } \ No newline at end of file diff --git a/idea/testData/psi/examples/collections/ISized.txt b/idea/testData/psi/examples/collections/ISized.txt index 20a7d2d6ad5..dacafb7e2eb 100644 --- a/idea/testData/psi/examples/collections/ISized.txt +++ b/idea/testData/psi/examples/collections/ISized.txt @@ -2,7 +2,7 @@ JetFile: ISized.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/io/IOSamples.jet b/idea/testData/psi/examples/io/IOSamples.jet index 4304fc00a38..621b6c0033b 100644 --- a/idea/testData/psi/examples/io/IOSamples.jet +++ b/idea/testData/psi/examples/io/IOSamples.jet @@ -1,8 +1,8 @@ -virtual class IAdder { +open class IAdder { fun add(item : T) : Boolean } -virtual class ICloseable { +open class ICloseable { fun close() } diff --git a/idea/testData/psi/examples/io/IOSamples.txt b/idea/testData/psi/examples/io/IOSamples.txt index 10ca7f4441a..4cdd7d38a23 100644 --- a/idea/testData/psi/examples/io/IOSamples.txt +++ b/idea/testData/psi/examples/io/IOSamples.txt @@ -2,7 +2,7 @@ JetFile: IOSamples.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') @@ -47,7 +47,7 @@ JetFile: IOSamples.jet PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/map/IMap.jet b/idea/testData/psi/examples/map/IMap.jet index 0b912bb838d..da51189c006 100644 --- a/idea/testData/psi/examples/map/IMap.jet +++ b/idea/testData/psi/examples/map/IMap.jet @@ -1,4 +1,4 @@ -virtual class IMap { +open class IMap { } \ No newline at end of file diff --git a/idea/testData/psi/examples/map/IMap.txt b/idea/testData/psi/examples/map/IMap.txt index db79dcc4753..569ba8cb241 100644 --- a/idea/testData/psi/examples/map/IMap.txt +++ b/idea/testData/psi/examples/map/IMap.txt @@ -2,7 +2,7 @@ JetFile: IMap.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/priorityqueues/IPriorityQueue.jet b/idea/testData/psi/examples/priorityqueues/IPriorityQueue.jet index b343cd49cc3..ee694f5c9d4 100644 --- a/idea/testData/psi/examples/priorityqueues/IPriorityQueue.jet +++ b/idea/testData/psi/examples/priorityqueues/IPriorityQueue.jet @@ -1,4 +1,4 @@ -virtual class IPriorityQueue { +open class IPriorityQueue { fun extract() : T fun add(item : T) val isEmpty : Boolean diff --git a/idea/testData/psi/examples/priorityqueues/IPriorityQueue.txt b/idea/testData/psi/examples/priorityqueues/IPriorityQueue.txt index 340dac8a68c..626b44d7c56 100644 --- a/idea/testData/psi/examples/priorityqueues/IPriorityQueue.txt +++ b/idea/testData/psi/examples/priorityqueues/IPriorityQueue.txt @@ -2,7 +2,7 @@ JetFile: IPriorityQueue.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.jet b/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.jet index 2d20c5666e7..86f317b7972 100644 --- a/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.jet +++ b/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.jet @@ -1,4 +1,4 @@ -class PriorityQueueAsPushPop wraps(wrapped : IPriorityQueue) : IPushPop { +class PriorityQueueAsPushPop(wrapped : IPriorityQueue) : IPushPop { override fun pop() = wrapped.extract() override fun push(item : T) = wrapped.add(item) override val isEmpty diff --git a/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.txt b/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.txt index 504d73ee76e..dcc8cfb2507 100644 --- a/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.txt +++ b/idea/testData/psi/examples/priorityqueues/PriorityQueueAsPushPop.txt @@ -9,8 +9,6 @@ JetFile: PriorityQueueAsPushPop.jet TYPE_PARAMETER PsiElement(IDENTIFIER)('T') PsiElement(GT)('>') - PsiWhiteSpace(' ') - PsiElement(wraps)('wraps') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER diff --git a/idea/testData/psi/examples/util/IComparable.jet b/idea/testData/psi/examples/util/IComparable.jet index b802c381464..1ce3f600ea6 100644 --- a/idea/testData/psi/examples/util/IComparable.jet +++ b/idea/testData/psi/examples/util/IComparable.jet @@ -1,3 +1,3 @@ -virtual class IComparable { +open class IComparable { fun compareTo(other : T) : Int } \ No newline at end of file diff --git a/idea/testData/psi/examples/util/IComparable.txt b/idea/testData/psi/examples/util/IComparable.txt index 1fd73634c0d..9404cdf4eb1 100644 --- a/idea/testData/psi/examples/util/IComparable.txt +++ b/idea/testData/psi/examples/util/IComparable.txt @@ -2,7 +2,7 @@ JetFile: IComparable.jet NAMESPACE CLASS MODIFIER_LIST - PsiElement(virtual)('virtual') + PsiElement(open)('open') PsiWhiteSpace(' ') PsiElement(class)('class') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/functionReceivers/PropertiesWithFunctionReceivers.jet b/idea/testData/psi/functionReceivers/PropertiesWithFunctionReceivers.jet index dd64b7d8b13..10bc73447c1 100644 --- a/idea/testData/psi/functionReceivers/PropertiesWithFunctionReceivers.jet +++ b/idea/testData/psi/functionReceivers/PropertiesWithFunctionReceivers.jet @@ -12,11 +12,11 @@ val {foo.bar.() : ()}.foo = foo val {foo.bar.() : ()}.foo : bar = foo [a] public get() {} - virtual set(a : b) {} + open set(a : b) {} val {foo.bar.() : ()}.foo : bar = foo - virtual set(a : b) {} + open set(a : b) {} val {foo.bar.() : ()}.foo : bar = foo diff --git a/idea/testData/resolve/Objects.jet b/idea/testData/resolve/Objects.jet index 92bbae39532..e59a6f1252c 100644 --- a/idea/testData/resolve/Objects.jet +++ b/idea/testData/resolve/Objects.jet @@ -1,6 +1,6 @@ namespace toplevelObjectDeclarations { class Foo(y : Int) { - ~foo()~virtual fun foo() : Int = 1 + ~foo()~open fun foo() : Int = 1 } object ~A~A : Foo(0) {