JET-47 Require a ':' in object literals

This commit is contained in:
Andrey Breslav
2011-05-24 22:31:21 +04:00
parent 2a2a697953
commit 5989fb2bc3
18 changed files with 43 additions and 15 deletions
+1 -1
View File
@@ -238,7 +238,7 @@ arrayAccess
;
objectLiteral
: "object" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a)
: "object" ":" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a)
;
/* Factory methods:
@@ -1591,7 +1591,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
/*
* objectLiteral
* : "object" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a)
* : "object" ":" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a)
* ;
*/
public void parseObjectLiteral() {
@@ -1605,6 +1605,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
myJetParsing.parseClassBody();
}
else {
expect(COLON, "Expecting ':'", TokenSet.create(IDENTIFIER, NAMESPACE_KEYWORD));
myJetParsing.parseDelegationSpecifierList();
if (at(LBRACE)) {
myJetParsing.parseClassBody();
+6 -6
View File
@@ -28,15 +28,15 @@ class foo {
}
private class object Fooo {
private class object : Fooo {
}
private class object Fooo, Bar by foo {
private class object : Fooo, Bar by foo {
}
private class object Fooo, Bar by foo, Goo()
private class object : Fooo, Bar by foo, Goo()
}
class Bar {}
@@ -74,15 +74,15 @@ class foo {
}
private class object Fooo {
private class object : Fooo {
}
private class object Fooo, Bar by foo {
private class object : Fooo, Bar by foo {
}
private class object Fooo, Bar by foo, Goo()
private class object : Fooo, Bar by foo, Goo()
}
+12
View File
@@ -202,6 +202,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -223,6 +225,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -256,6 +260,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -553,6 +559,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -574,6 +582,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -607,6 +617,8 @@ JetFile: SimpleClassMembers.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
+1 -1
View File
@@ -23,7 +23,7 @@ fun a(
a : foo = new Foo<A>(bar),
a : foo = new Foo(),
a : foo = new Foo<bar>(),
a : foo = object Foo{},
a : foo = object : Foo{},
a : foo = throw new Foo(),
a : foo = return 10,
a : foo = break,
+2
View File
@@ -485,6 +485,8 @@ JetFile: SimpleExpressions.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -1,6 +1,6 @@
fun foo() {
addMouseListener(object MouseAdapter() {
addMouseListener(object : MouseAdapter() {
private var clickCount = 0;
@@ -20,6 +20,8 @@ JetFile: AnonymousObjects.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CALL
TYPE_REFERENCE
+1 -1
View File
@@ -129,7 +129,7 @@ class BinaryTree<T> : IMutableSet<T> {
override fun iterator() : IIterator<T> = mutableIterator()
override fun mutableIterator() : IMutableIterator<T> = object IMutableIterator {
override fun mutableIterator() : IMutableIterator<T> = object : IMutableIterator {
val version = BinaryTree.this.version
val down = Stack<TreeNode>()
val up = Stack<TreeNode>()
@@ -1872,6 +1872,8 @@ JetFile: BinaryTree.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
+1 -1
View File
@@ -1,4 +1,4 @@
val foo = object AntBuilder() {
val foo = object : AntBuilder() {
[lazy] val groovy = library {
classpath("$libs/groovy-...")
+2
View File
@@ -11,6 +11,8 @@ JetFile: Builder.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CALL
TYPE_REFERENCE
@@ -9,7 +9,7 @@ virtual class Buildable {
class List<T> {
class object Buildable {
class object : Buildable {
override fun newBuilder<E, R>() : Builder<E, R>
}
@@ -137,6 +137,8 @@ JetFile: PolymorphicClassObjects.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CLASS
TYPE_REFERENCE
@@ -5,7 +5,7 @@ class ArrayList<T> : IMutableList<T> {
override fun iterator() : IIterator<T> = mutableIterator()
override fun mutableIterator() : IMutableIterator<T> = object IMutableIterator() { // T is inferred
override fun mutableIterator() : IMutableIterator<T> = object : IMutableIterator() { // T is inferred
private val index = 0
private var myVersion = version
@@ -142,6 +142,8 @@ JetFile: ArrayList.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CALL
TYPE_REFERENCE
@@ -11,7 +11,7 @@ enum class List<out T>(theSize : Int) : IList<T> {
get() = this == Nil
override fun iterator() = object IIterator() {
override fun iterator() = object : IIterator() {
private var current = List.this
override val hasNext
@@ -226,6 +226,8 @@ JetFile: List.jet
OBJECT_LITERAL
PsiElement(object)('object')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CALL
TYPE_REFERENCE