@@ -90,29 +90,20 @@ object Completion:
90
90
91
91
val completionSymbolKind : Mode =
92
92
path match
93
- case untpd.Ident (_) :: untpd.Import (_, _) :: _ => Mode .ImportOrExport
94
- case untpd.Ident (_) :: (_ : untpd.ImportSelector ) :: _ => Mode .ImportOrExport
95
- case untpd.Literal (Constants .Constant (_ : String )) :: _ => Mode .Term // literal completions
93
+ case untpd.Ident (_) :: (_ : untpd.ImportSelector ) :: _ => Mode .ImportOrExport // import scala.@@
94
+ case untpd.Ident (_) :: (_ : untpd.ImportOrExport ) :: _ => Mode .ImportOrExport | Mode .Scope // import TrieMa@@
95
+
96
+ case untpd.Literal (Constants .Constant (_ : String )) :: _ => Mode .Term | Mode .Scope // literal completions
96
97
case (ref : untpd.RefTree ) :: _ =>
97
- if (ref.name.isTermName) Mode .Term
98
- else if (ref.name.isTypeName) Mode .Type
99
- else Mode .None
98
+ val maybeSelectMembers = if ref.isInstanceOf [untpd.Select ] then Mode .Member else Mode .Scope
100
99
101
- case ( sel : untpd. ImportSelector ) :: _ =>
102
- if sel.imported.span.contains(pos.span) then Mode .ImportOrExport
103
- else Mode .None // Can't help completing the renaming
100
+ if (ref.name.isTermName) Mode . Term | maybeSelectMembers
101
+ else if (ref.name.isTypeName) Mode .Type | maybeSelectMembers
102
+ else Mode .None
104
103
105
- case (_ : untpd.ImportOrExport ) :: _ => Mode .ImportOrExport
106
104
case _ => Mode .None
107
105
108
- val completionKind : Mode =
109
- path match
110
- case Nil | (_ : untpd.PackageDef ) :: _ => Mode .None
111
- case untpd.Ident (_) :: (_ : untpd.ImportSelector ) :: _ => Mode .Member
112
- case (_ : untpd.Select ) :: _ => Mode .Member
113
- case _ => Mode .Scope
114
-
115
- completionSymbolKind | completionKind
106
+ completionSymbolKind
116
107
117
108
/** When dealing with <errors> in varios palces we check to see if they are
118
109
* due to incomplete backticks. If so, we ensure we get the full prefix
@@ -141,18 +132,10 @@ object Completion:
141
132
i + 1
142
133
143
134
path match
144
- case (sel : untpd.ImportSelector ) :: _ =>
145
- completionPrefix(sel.imported :: Nil , pos)
146
-
147
135
case untpd.Ident (_) :: (sel : untpd.ImportSelector ) :: _ if ! sel.isGiven =>
148
136
if sel.isWildcard then pos.source.content()(pos.point - 1 ).toString
149
137
else completionPrefix(sel.imported :: Nil , pos)
150
138
151
- case (tree : untpd.ImportOrExport ) :: _ =>
152
- tree.selectors.find(_.span.contains(pos.span)).map: selector =>
153
- completionPrefix(selector :: Nil , pos)
154
- .getOrElse(" " )
155
-
156
139
// Foo.`se<TAB> will result in Select(Ident(Foo), <error>)
157
140
case (select : untpd.Select ) :: _ if select.name == nme.ERROR =>
158
141
checkBacktickPrefix(select.source.content(), select.nameSpan.start, select.span.end)
@@ -211,7 +194,6 @@ object Completion:
211
194
case tpd.Select (qual, _) :: _ if qual.typeOpt.hasSimpleKind => completer.selectionCompletions(qual)
212
195
case tpd.Select (qual, _) :: _ => Map .empty
213
196
case (tree : tpd.ImportOrExport ) :: _ => completer.directMemberCompletions(tree.expr)
214
- case (_ : untpd.ImportSelector ) :: tpd.Import (expr, _) :: _ => completer.directMemberCompletions(expr)
215
197
case _ => completer.scopeCompletions
216
198
217
199
interactiv.println(i """ completion info with pos = $pos,
0 commit comments