Completely rewritten keyword completion implementation using another approach

#KT-2816 Fixed
This commit is contained in:
Valentin Kipyatkov
2014-10-08 22:28:04 +04:00
parent 6a4fe52e51
commit 549171d043
41 changed files with 528 additions and 582 deletions
@@ -0,0 +1,11 @@
class Test {
class <caret>
}
/*TODO: should be only 'object'*/
// EXIST: class
// EXIST: fun
// EXIST: object
// EXIST: trait
// EXIST: val
// NUMBER: 5
@@ -1,7 +1,33 @@
class MouseMovedEventArgs
{
public val X : int = 0
in<caret>
<caret>
}
// EXIST: internal
// EXIST: abstract
// EXIST: annotation
// EXIST: as
// EXIST: class
// EXIST: enum
// EXIST: final
// EXIST: fun
// EXIST: get
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// EXIST: object
// EXIST: open
// EXIST: out
/*why?*/
// EXIST: override
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: set
// EXIST: trait
// EXIST: val
// EXIST: var
// EXIST: vararg
/*why?*/
// NUMBER: 23
@@ -3,7 +3,4 @@ fun foo() {
str.<caret>
}
// ABSENT: package, as, type, class, this, super, val, var, fun, for, null, true
// ABSENT: false, is, in, throw, return, break, continue, object, if, try, else, while
// ABSENT: do, when, trait, This
// NUMBER: 0
@@ -3,4 +3,4 @@ fun foo() {
str. <caret>
}
// ABSENT: public, val, in, if, when, this
// NUMBER: 0
@@ -0,0 +1,25 @@
fun foo(p: Int) {
x()
y()
val edge = a.b(<caret>)
z()
}
// EXIST: break
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: true
// EXIST: try
// EXIST: when
// EXIST: while
// NUMBER: 17
@@ -4,8 +4,4 @@ class TestClass {
}
}
// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do
// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in
// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public
// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var
// ABSENT: vararg, when, where, while
// NUMBER: 0
+1 -5
View File
@@ -4,8 +4,4 @@ class TestClass {
}
}
// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do
// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in
// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public
// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var
// ABSENT: vararg, when, where, while
// NUMBER: 0
@@ -7,52 +7,28 @@ public class Test {
}
}
// EXIST: abstract
/* // ABSENT: annotation */
// ABSENT: as
// ABSENT: break
// ABSENT: by
// ABSENT: catch
// EXIST: annotation
// EXIST: class
// ABSENT: continue
// ABSENT: default
// ABSENT: do
// ABSENT: else
// EXIST: enum
// ABSENT: false
// EXIST: final
// ABSENT: finally
// ABSENT: for
// EXIST: fun
// EXIST: get
// ABSENT: if
// ABSENT: import
// ABSENT: in
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// ABSENT: is
// ABSENT: null
// EXIST: object
// EXIST: open
// ABSENT: out
// EXIST: out
/*why?*/
// EXIST: override
// ABSENT: package
// EXIST: private
// EXIST: protected
// EXIST: public
// ABSENT: ref
// ABSENT: return
// EXIST: set
// ABSENT: super
// ABSENT: This
// ABSENT: this
// ABSENT: throw
// EXIST: trait
// ABSENT: true
// ABSENT: try
// EXIST: typealias
// EXIST: val
// EXIST: var
// ABSENT: vararg
// ABSENT: when
// ABSENT: where
// ABSENT: while
// EXIST: vararg
/*why?*/
// NUMBER: 20
@@ -3,51 +3,26 @@ class TestClass {
}
// EXIST: abstract
// ABSENT: annotation
// ABSENT: as
// ABSENT: break
// ABSENT: by
// ABSENT: catch
// EXIST: annotation
// EXIST: class
// ABSENT: continue
// ABSENT: default
// ABSENT: do
// ABSENT: else
// EXIST: enum
// ABSENT: false
// EXIST: final
// ABSENT: finally
// ABSENT: for
// EXIST: fun
// EXIST: get
// ABSENT: if
// ABSENT: import
// ABSENT: in
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// ABSENT: is
// ABSENT: null
// EXIST: object
// EXIST: open
// ABSENT: out
// EXIST: out
/*why?*/
// EXIST: override
// ABSENT: package
// EXIST: private
// EXIST: protected
// EXIST: public
// ABSENT: ref
// ABSENT: return
// EXIST: set
// ABSENT: super
// ABSENT: This
// ABSENT: this
// ABSENT: throw
// EXIST: trait
// ABSENT: true
// ABSENT: try
// EXIST: typealias
// EXIST: val
// EXIST: var
// ABSENT: vararg
// ABSENT: when
// ABSENT: where
// ABSENT: while
// EXIST: vararg
/*why?*/
// NUMBER: 20
@@ -1,4 +1,5 @@
class T<<caret>>
// EXIST: in, out
// ABSENT: private
// EXIST: in
/*TODO: // EXIST: out*/
// NUMBER: 1
@@ -0,0 +1,27 @@
fun foo() {
<caret>
}
// EXIST: break
// EXIST: class
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: fun
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: trait
// EXIST: true
// EXIST: try
// EXIST: val
// EXIST: var
// EXIST: when
// EXIST: while
// NUMBER: 22
@@ -0,0 +1,20 @@
fun foo() = <caret>
// EXIST: break
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: true
// EXIST: try
// EXIST: when
// EXIST: while
// NUMBER: 17
@@ -0,0 +1,5 @@
fun <caret>.
// NUMBER: 0
// For KT-1894
@@ -1,51 +0,0 @@
fun foo() {
<caret>
}
// ABSENT: abstract
/* // ABSENT: annotation */
// EXIST: as
// EXIST: break
// EXIST: by
// EXIST: catch
// EXIST: class
// EXIST: continue
// EXIST: do
// EXIST: else
// EXIST: enum
// EXIST: false
// ABSENT: final
// EXIST: finally
// EXIST: for
// EXIST: fun
// EXIST: get
// EXIST: if
// ABSENT: import
// EXIST: in
// EXIST: internal
// EXIST: is
// EXIST: null
// EXIST: object
// ABSENT: open
// ABSENT: out
// ABSENT: override
// ABSENT: package
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: return
// EXIST: set
// EXIST: super
// EXIST: This
// EXIST: this
// EXIST: throw
// EXIST: trait
// EXIST: true
// EXIST: try
// EXIST: typealias
// EXIST: val
// EXIST: var
// EXIST: vararg
// EXIST: when
// EXIST: where
// EXIST: while
@@ -0,0 +1,7 @@
fun foo() {
val test : <caret>
}
/*TODO: Is 'package' type qualifier syntax correct?*/
// EXIST: package
// NUMBER: 1
@@ -1,5 +0,0 @@
fun f<caret>.
// ABSENT: final
// For KT-1894
@@ -0,0 +1,21 @@
val prop: Int
get() = <caret>
// EXIST: break
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: true
// EXIST: try
// EXIST: when
// EXIST: while
// NUMBER: 17
@@ -0,0 +1,12 @@
package TestData
class TestSample() {
fun test(<caret>) {
}
}
/* TODO: they all are not correct */
// EXIST: val
// EXIST: var
// EXIST: in
// NUMBER: 3
@@ -1,54 +0,0 @@
package TestData
class TestSample() {
fun test(<caret>) {
}
}
// ABSENT: abstract
// ABSENT: annotation
// ABSENT: as
// ABSENT: break
// ABSENT: by
// ABSENT: catch
// ABSENT: class
// ABSENT: continue
// ABSENT: do
// ABSENT: else
// ABSENT: enum
// ABSENT: false
// ABSENT: final
// ABSENT: finally
// ABSENT: for
// ABSENT: fun
// ABSENT: get
// ABSENT: if
// ABSENT: import
// ABSENT: in
// ABSENT: internal
// ABSENT: is
// ABSENT: null
// ABSENT: object
// ABSENT: open
// ABSENT: out
// ABSENT: override
// ABSENT: package
// ABSENT: private
// ABSENT: protected
// ABSENT: public
// ABSENT: return
// ABSENT: set
// ABSENT: super
// ABSENT: This
// ABSENT: this
// ABSENT: throw
// ABSENT: trait
// ABSENT: true
// ABSENT: try
// ABSENT: type
// ABSENT: val
// ABSENT: var
// ABSENT: vararg
// ABSENT: when
// ABSENT: where
// ABSENT: while
@@ -3,4 +3,5 @@ open class Foo {
p<caret> val foo = 1
}
// EXIST: private, public, protected
// EXIST: private, public, protected, open
// NUMBER: 4
@@ -2,5 +2,6 @@ class Test<<caret>
fun testing() {}
// ABSENT: private, public, protected, abstract
// EXIST: in, out
// EXIST: in
/*TODO: // EXIST: out*/
// NUMBER: 1
@@ -0,0 +1,20 @@
fun foo(p: Int = <caret>)
// EXIST: break
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: true
// EXIST: try
// EXIST: when
// EXIST: while
// NUMBER: 17
@@ -1,51 +0,0 @@
fun test(<caret>) {
}
// ABSENT: abstract
// ABSENT: annotation
// ABSENT: as
// ABSENT: break
// ABSENT: by
// ABSENT: catch
// ABSENT: class
// ABSENT: continue
// ABSENT: do
// ABSENT: else
// ABSENT: enum
// ABSENT: false
// ABSENT: final
// ABSENT: finally
// ABSENT: for
// ABSENT: fun
// ABSENT: get
// ABSENT: if
// ABSENT: import
// ABSENT: in
// ABSENT: internal
// ABSENT: is
// ABSENT: null
// ABSENT: object
// ABSENT: open
// ABSENT: out
// ABSENT: override
// ABSENT: package
// ABSENT: private
// ABSENT: protected
// ABSENT: public
// ABSENT: return
// ABSENT: set
// ABSENT: super
// ABSENT: This
// ABSENT: this
// ABSENT: throw
// ABSENT: trait
// ABSENT: true
// ABSENT: try
// ABSENT: type
// ABSENT: val
// ABSENT: var
// ABSENT: vararg
// ABSENT: when
// ABSENT: where
// ABSENT: while
@@ -0,0 +1,20 @@
var a : Int = <caret>
// EXIST: break
// EXIST: continue
// EXIST: do
// EXIST: false
// EXIST: for
// EXIST: if
// EXIST: null
// EXIST: object
// EXIST: package
// EXIST: return
// EXIST: super
// EXIST: this
// EXIST: throw
// EXIST: true
// EXIST: try
// EXIST: when
// EXIST: while
// NUMBER: 17
@@ -1,5 +1,5 @@
val e.<caret>
// ABSENT: else
// NUMBER: 0
// For KT-1950
@@ -4,8 +4,4 @@ class TestClass {
}
}
// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do
// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in
// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public
// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var
// ABSENT: vararg, when, where, while
// NUMBER: 0
@@ -0,0 +1,9 @@
fun test(<caret>) {
}
/* TODO: they all are not correct */
// EXIST: val
// EXIST: var
// EXIST: in
// NUMBER: 3
@@ -1,8 +0,0 @@
var a : Int = <caret>
// EXIST: else
// EXIST: false
// EXIST: if
// EXIST: null
// EXIST: this
// EXIST: true
@@ -2,8 +2,28 @@ package Test
<caret>
// EXIST: enum
// EXIST: trait
// EXIST: abstract
// EXIST: annotation
// EXIST: class
// EXIST: enum
// EXIST: final
// EXIST: fun
// EXIST: import
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// EXIST: object
// EXIST: open
// EXIST: out
/*why?*/
// EXIST: override
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: trait
// EXIST: val
// EXIST: var
// EXIST: vararg
/*why?*/
// NUMBER: 21
@@ -1,51 +0,0 @@
fun foo() {
val test : <caret>
}
// ABSENT: abstract
/* // ABSENT: annotation */
// EXIST: as
// EXIST: break
// EXIST: by
// EXIST: catch
// EXIST: class
// EXIST: continue
// EXIST: do
// EXIST: else
// EXIST: enum
// EXIST: false
// ABSENT: final
// EXIST: finally
// EXIST: for
// EXIST: fun
// EXIST: get
// EXIST: if
// ABSENT: import
// EXIST: in
// EXIST: internal
// EXIST: is
// EXIST: null
// EXIST: object
// ABSENT: open
// ABSENT: out
// ABSENT: override
// ABSENT: package
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: return
// EXIST: set
// EXIST: super
// EXIST: This
// EXIST: this
// EXIST: throw
// EXIST: trait
// EXIST: true
// EXIST: try
// EXIST: typealias
// EXIST: val
// EXIST: var
// EXIST: vararg
// EXIST: when
// EXIST: where
// EXIST: while
@@ -2,8 +2,4 @@ class TestClass {
// <caret>
}
// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do
// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in
// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public
// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var
// ABSENT: vararg, when, where, while
// NUMBER: 0
@@ -1,3 +1,3 @@
P<caret>
// ABSENT: public, private, protected
// NUMBER: 0
@@ -0,0 +1,32 @@
class Some {
var a : Int
<caret>
}
// EXIST: abstract
// EXIST: annotation
// EXIST: by
// EXIST: class
// EXIST: enum
// EXIST: final
// EXIST: fun
// EXIST: get
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// EXIST: object
// EXIST: open
// EXIST: out
/*why?*/
// EXIST: override
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: set
// EXIST: trait
// EXIST: val
// EXIST: var
// EXIST: vararg
/*why?*/
// NUMBER: 23
@@ -0,0 +1,50 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class Some {
var a : Int
get() = 0
<caret>
}
// EXIST: abstract
// EXIST: annotation
// EXIST: as
// EXIST: class
// EXIST: enum
// EXIST: final
// EXIST: fun
// EXIST: get
/*TODO*/
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// EXIST: object
// EXIST: open
// EXIST: out
/*why?*/
// EXIST: override
// EXIST: private
// EXIST: protected
// EXIST: public
// EXIST: set
// EXIST: trait
// EXIST: val
// EXIST: var
// EXIST: vararg
/*why?*/
// NUMBER: 23
@@ -1,7 +0,0 @@
class Some {
val a : Int
<caret>
}
// EXIST: get
// EXIST: set
+11 -33
View File
@@ -1,50 +1,28 @@
<caret>
// EXIST: abstract
// ABSENT: annotation
// ABSENT: as
// ABSENT: break
// ABSENT: by
// ABSENT: catch
// EXIST: annotation
// EXIST: class
// ABSENT: continue
// ABSENT: default
// ABSENT: do
// ABSENT: else
// EXIST: enum
// ABSENT: false
// EXIST: final
// ABSENT: finally
// ABSENT: for
// EXIST: fun
// EXIST: get
// ABSENT: if
// EXIST: import
// ABSENT: in
// EXIST: in
/*why?*/
// EXIST: inner
// EXIST: internal
// ABSENT: is
// ABSENT: null
// EXIST: object
// EXIST: open
// ABSENT: out
// ABSENT: override
// EXIST: out
/*why?*/
// EXIST: override
// EXIST: package
// EXIST: private
// EXIST: protected
// EXIST: public
// ABSENT: ref
// ABSENT: return
// EXIST: set
// ABSENT: super
// ABSENT: This
// ABSENT: this
// ABSENT: throw
// EXIST: trait
// ABSENT: true
// ABSENT: try
// EXIST: typealias
// EXIST: val
// EXIST: var
// ABSENT: vararg
// ABSENT: when
// ABSENT: where
// ABSENT: while
// EXIST: vararg
/*why?*/
// NUMBER: 22
@@ -1,5 +0,0 @@
class Test {
class <caret>
}
// EXIST: object