@@ -127,22 +127,19 @@ class TypeOps:
127
127
val (resType, paramss, tparams) = flatten(mp, Nil , Nil )
128
128
129
129
val sparamss = paramss.map(_.sscope)
130
- val stparams = Some ( tparams.sscope)
130
+ val stparams = tparams.sscopeOpt
131
131
s.MethodSignature (
132
132
stparams,
133
133
sparamss,
134
134
resType.toSemanticType
135
135
)
136
136
137
137
case cls : ClassInfo =>
138
- val stparams =
139
- if (cls.cls.typeParams.nonEmpty)
140
- Some (cls.cls.typeParams.sscope)
141
- else None
138
+ val stparams = cls.cls.typeParams.sscopeOpt
142
139
val sparents = cls.parents.map(_.toSemanticType)
143
140
val sself = cls.selfType.toSemanticType
144
- val decls = cls.decls.toList.sscope
145
- s.ClassSignature (stparams, sparents, sself, Some ( decls) )
141
+ val decls = cls.decls.toList.sscopeOpt
142
+ s.ClassSignature (stparams, sparents, sself, decls)
146
143
147
144
case TypeBounds (lo, hi) =>
148
145
// for `type X[T] = T` is equivalent to `[T] =>> T`
@@ -159,8 +156,8 @@ class TypeOps:
159
156
val params = (loParams ++ hiParams).distinctBy(_.name)
160
157
val slo = loRes.toSemanticType
161
158
val shi = hiRes.toSemanticType
162
- val stparams = params.sscope
163
- s.TypeSignature (Some ( stparams) , slo, shi)
159
+ val stparams = params.sscopeOpt
160
+ s.TypeSignature (stparams, slo, shi)
164
161
165
162
case other =>
166
163
s.ValueSignature (
@@ -248,8 +245,8 @@ class TypeOps:
248
245
val decls = refinedInfos.flatMap { (name, _) =>
249
246
refinementSymtab.get((rt, name))
250
247
}
251
- val sdecls = decls.sscope (using LinkMode .HardlinkChildren )
252
- s.StructuralType (stpe, Some ( sdecls) )
248
+ val sdecls = decls.sscopeOpt (using LinkMode .HardlinkChildren )
249
+ s.StructuralType (stpe, sdecls)
253
250
254
251
case rec : RecType =>
255
252
loop(rec.parent) // should be handled as RefinedType
@@ -304,7 +301,7 @@ class TypeOps:
304
301
if (wildcardSyms.isEmpty) applied
305
302
else s.ExistentialType (
306
303
applied,
307
- Some ( wildcardSyms.sscope (using LinkMode .HardlinkChildren ) )
304
+ wildcardSyms.sscopeOpt (using LinkMode .HardlinkChildren )
308
305
)
309
306
310
307
case and : AndType =>
@@ -350,3 +347,6 @@ object SymbolScopeOps:
350
347
case LinkMode .HardlinkChildren =>
351
348
s.Scope (hardlinks = syms.map(_.symbolInfo(Set .empty)))
352
349
}
350
+
351
+ def sscopeOpt (using linkMode : LinkMode )(using SemanticSymbolBuilder , TypeOps , Context ): Option [s.Scope ] =
352
+ if syms.nonEmpty then Some (syms.sscope) else None
0 commit comments