Skip to content

Commit 97b16ce

Browse files
committed
[CodeCompletion] Remove unsound check in override completion
In override completion, we didn't use to emit 'class var' with the initial expression. However, having initial expression does not have any bearing on whether the declaration is overridable or not.
1 parent 044790d commit 97b16ce

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

lib/IDE/CodeCompletion.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4399,10 +4399,6 @@ class CompletionOverrideLookup : public swift::VisibleDeclConsumer {
43994399
if (D->isFinal())
44004400
return;
44014401

4402-
// A 'class' member with an initial value cannot be overriden either.
4403-
if (D->isStatic() && isa<VarDecl>(D) && cast<VarDecl>(D)->hasInitialValue())
4404-
return;
4405-
44064402
bool hasIntroducer = hasFuncIntroducer ||
44074403
hasVarIntroducer ||
44084404
hasTypealiasIntroducer;

test/IDE/complete_override.swift

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -724,9 +724,10 @@ class Override26 : OverrideBase, OverrideP {
724724
// Same as MODIFIER24
725725
}
726726

727-
// MODIFIER1: Begin completions, 9 items
727+
// MODIFIER1: Begin completions, 10 items
728728
// MODIFIER1-DAG: Decl[Constructor]/Super: required init(p: Int) {|}; name=required init(p: Int)
729729
// MODIFIER1-DAG: Decl[StaticMethod]/Super: override class func classMethod() {|}; name=classMethod()
730+
// MODIFIER1-DAG: Decl[StaticVar]/Super: override class var classVar: Int; name=classVar: Int
730731
// MODIFIER1-DAG: Decl[StaticVar]/Super: override class var classGetOnlyVar: Int; name=classGetOnlyVar: Int
731732
// MODIFIER1-DAG: Decl[InstanceMethod]/Super: override func defaultMethod() {|}; name=defaultMethod()
732733
// MODIFIER1-DAG: Decl[InstanceMethod]/Super: override func openMethod() {|}; name=openMethod()
@@ -736,7 +737,8 @@ class Override26 : OverrideBase, OverrideP {
736737
// MODIFIER1-DAG: Decl[AssociatedType]/Super: typealias Assoc = {#(Type)#}; name=Assoc = Type
737738
// MODIFIER1: End completions
738739

739-
// MODIFIER2: Begin completions, 5 items
740+
// MODIFIER2: Begin completions, 6 items
741+
// MODIFIER2-DAG: Decl[StaticVar]/Super: override class var classVar: Int; name=classVar: Int
740742
// MODIFIER2-DAG: Decl[StaticVar]/Super: override class var classGetOnlyVar: Int; name=classGetOnlyVar: Int
741743
// MODIFIER2-DAG: Decl[StaticMethod]/Super: override class func classMethod() {|}; name=classMethod()
742744
// MODIFIER2-DAG: Decl[InstanceMethod]/Super: override func defaultMethod() {|}; name=defaultMethod()
@@ -760,7 +762,8 @@ class Override26 : OverrideBase, OverrideP {
760762
// MODIFIER6-DAG: Decl[AssociatedType]/Super: Assoc = {#(Type)#}; name=Assoc = Type
761763
// MODIFIER6: End completions
762764

763-
// MODIFIER7: Begin completions, 7 items
765+
// MODIFIER7: Begin completions, 8 items
766+
// MODIFIER7-DAG: Decl[StaticVar]/Super: class var classVar: Int; name=classVar: Int
764767
// MODIFIER7-DAG: Decl[StaticVar]/Super: class var classGetOnlyVar: Int; name=classGetOnlyVar: Int
765768
// MODIFIER7-DAG: Decl[StaticMethod]/Super: class func classMethod() {|}; name=classMethod()
766769
// MODIFIER7-DAG: Decl[InstanceMethod]/Super: func defaultMethod() {|}; name=defaultMethod()
@@ -785,11 +788,13 @@ class Override26 : OverrideBase, OverrideP {
785788

786789
// MODIFIER13-NOT: Begin completions
787790

788-
// MODIFIER15: Begin completions, 1 items
791+
// MODIFIER15: Begin completions, 2 items
792+
// MODIFIER15-DAG: Decl[StaticVar]/Super/Erase[4]: override var classVar: Int; name=classVar: Int
789793
// MODIFIER15-DAG: Decl[StaticVar]/Super/Erase[4]: override var classGetOnlyVar: Int; name=classGetOnlyVar: Int
790794
// MODIFIER15: End completions
791795

792-
// MODIFIER17: Begin completions, 1 items
796+
// MODIFIER17: Begin completions, 2 items
797+
// MODIFIER17-DAG: Decl[StaticVar]/Super: classVar: Int; name=classVar: Int
793798
// MODIFIER17-DAG: Decl[StaticVar]/Super: classGetOnlyVar: Int; name=classGetOnlyVar: Int
794799
// MODIFIER17: End completions
795800

@@ -801,13 +806,15 @@ class Override26 : OverrideBase, OverrideP {
801806
// MODIFIER22: Decl[StaticMethod]/Super/Erase[5]: override func classMethod() {|}; name=classMethod()
802807
// MODIFIER22: End completions
803808

804-
// MODIFIER23: Begin completions, 2 items
809+
// MODIFIER23: Begin completions, 3 items
805810
// MODIFIER23-DAG: Decl[StaticMethod]/Super: override func classMethod() {|}; name=classMethod()
811+
// MODIFIER23-DAG: Decl[StaticVar]/Super: override var classVar: Int; name=classVar: Int
806812
// MODIFIER23-DAG: Decl[StaticVar]/Super: override var classGetOnlyVar: Int; name=classGetOnlyVar: Int
807813
// MODIFIER23: End completions
808814

809-
// MODIFIER24: Begin completions, 2 items
815+
// MODIFIER24: Begin completions, 3 items
810816
// MODIFIER24-DAG: Decl[StaticMethod]/Super: func classMethod() {|}; name=classMethod()
817+
// MODIFIER24-DAG: Decl[StaticVar]/Super: var classVar: Int; name=classVar: Int
811818
// MODIFIER24-DAG: Decl[StaticVar]/Super: var classGetOnlyVar: Int; name=classGetOnlyVar: Int
812819
// MODIFIER24: End completions
813820

0 commit comments

Comments
 (0)