Skip to content

Commit cc25c89

Browse files
authored
Merge pull request scala#10496 from som-snytt/tweak/discarded-values
Tweaks for lint-friendliness [ci: last-only]
2 parents 9ecf74d + fbb3d1c commit cc25c89

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+172
-149
lines changed

src/compiler/scala/reflect/quasiquotes/Placeholders.scala

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ trait Placeholders { self: Quasiquotes =>
3232
lazy val code = {
3333
val sb = new StringBuilder()
3434

35-
def appendPart(value: String, pos: Position) = {
35+
def appendPart(value: String, pos: Position): Unit = {
3636
val start = sb.length
3737
sb.append(value)
3838
val end = sb.length
3939
posMap += pos -> ((start, end))
4040
}
4141

42-
def appendHole(tree: Tree, rank: Rank) = {
42+
def appendHole(tree: Tree, rank: Rank): Unit = {
4343
val placeholderName = c.freshName(TermName(nme.QUASIQUOTE_PREFIX))
4444
sb.append(placeholderName)
4545
val holeTree =
@@ -76,14 +76,13 @@ trait Placeholders { self: Quasiquotes =>
7676
accessed += skey
7777
value
7878
}
79-
def update(key: Name, hole: Hole) =
79+
def update(key: Name, hole: Hole): Unit =
8080
underlying += key.toString -> hole
8181
def get(key: Name): Option[Hole] = {
8282
val skey = key.toString
83-
underlying.get(skey).map { v =>
84-
accessed += skey
85-
v
86-
}
83+
val res = underlying.get(skey)
84+
res.foreach(_ => accessed += skey)
85+
res
8786
}
8887
def keysIterator: Iterator[TermName] = underlying.keysIterator.map(TermName(_))
8988
}

src/compiler/scala/reflect/reify/phases/Calculate.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ trait Calculate {
6060
bindRelatedSymbol(tree.symbol.moduleClass, "moduleClass")
6161
bindRelatedSymbol(tree.symbol.companionClass, "companionClass")
6262
bindRelatedSymbol(tree.symbol.companionModule, "companionModule")
63-
Some(tree.symbol) collect { case termSymbol: TermSymbol => bindRelatedSymbol(termSymbol.referenced, "referenced") }
64-
Some(tree) collect { case labelDef: LabelDef => labelDef.params foreach (param => bindRelatedSymbol(param.symbol, "labelParam")) }
63+
tree.symbol match { case termSymbol: TermSymbol => bindRelatedSymbol(termSymbol.referenced, "referenced") case _ => }
64+
tree match { case labelDef: LabelDef => labelDef.params.foreach(param => bindRelatedSymbol(param.symbol, "labelParam")) case _ => }
6565
def bindRelatedSymbol(related: Symbol, name: String): Unit =
6666
if (related != null && related != NoSymbol) {
6767
if (reifyDebug) println("boundSym (" + name + "): " + related)

src/compiler/scala/tools/nsc/Global.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
8282
def findMemberFromRoot(fullName: Name): Symbol = rootMirror.findMemberFromRoot(fullName)
8383

8484
override def openPackageModule(pkgClass: Symbol, force: Boolean): Unit = {
85-
if (force || isPast(currentRun.namerPhase)) super.openPackageModule(pkgClass, true)
86-
else analyzer.packageObjects.deferredOpen.add(pkgClass)
85+
if (force || isPast(currentRun.namerPhase)) super.openPackageModule(pkgClass, force = true)
86+
else analyzer.packageObjects.deferredOpen.addOne(pkgClass)
8787
}
8888

8989
// alternate constructors ------------------------------------------
@@ -976,7 +976,7 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
976976
cp.packages(parent).exists(_.name == fullPackageName)
977977
}
978978

979-
def invalidateOrRemove(pkg: ClassSymbol) = {
979+
def invalidateOrRemove(pkg: ClassSymbol): Unit = {
980980
if (packageExists(fullClasspath))
981981
pkg setInfo new loaders.PackageLoader(fullPackageName, fullClasspath)
982982
else
@@ -1192,7 +1192,7 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
11921192
private class SyncedCompilationBuffer { self =>
11931193
private val underlying = new mutable.ArrayBuffer[CompilationUnit]
11941194
def size = synchronized { underlying.size }
1195-
def +=(cu: CompilationUnit): this.type = { synchronized { underlying += cu }; this }
1195+
def +=(cu: CompilationUnit): this.type = synchronized { underlying += cu; this }
11961196
def head: CompilationUnit = synchronized { underlying.head }
11971197
def apply(i: Int): CompilationUnit = synchronized { underlying(i) }
11981198
def iterator: Iterator[CompilationUnit] = new collection.AbstractIterator[CompilationUnit] {
@@ -1691,7 +1691,7 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
16911691
*/
16921692
@tailrec
16931693
private def resetPackageClass(pclazz: Symbol): Unit = if (typerPhase != NoPhase) {
1694-
enteringPhase(firstPhase) {
1694+
enteringPhase[Unit](firstPhase) {
16951695
pclazz.setInfo(enteringPhase(typerPhase)(pclazz.info))
16961696
}
16971697
if (!pclazz.isRoot) resetPackageClass(pclazz.owner)

src/compiler/scala/tools/nsc/PipelineMain.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class PipelineMainClass(argFiles: Seq[Path], pipelineSettings: PipelineMain.Pipe
4848
val validRootPathComponent = root.toString.replace("/", "").replace(":", "")
4949
val result = changeExtension(pickleCache.resolve(validRootPathComponent).resolve(root.relativize(file)).normalize(), newExtension)
5050
if (useJars) Files.createDirectories(result.getParent)
51-
strippedAndExportedClassPath.put(file.toRealPath().normalize(), result)
51+
strippedAndExportedClassPath.update(file.toRealPath().normalize(), result)
5252
result
5353
}
5454

@@ -176,7 +176,7 @@ class PipelineMainClass(argFiles: Seq[Path], pipelineSettings: PipelineMain.Pipe
176176
val awaitAllFutures: Future[_] = sequenceFailSlow(allFutures)
177177
var lastNumCompleted = allFutures.count(_.isCompleted)
178178
while (true) try {
179-
Await.result(awaitAllFutures, Duration(60, "s"))
179+
Await.ready(awaitAllFutures, Duration(60, "s"))
180180
timer.stop()
181181
val numCompleted = allFutures.count(_.isCompleted)
182182
reporterEcho(s"PROGRESS: $numCompleted / $numAllFutures")

src/compiler/scala/tools/nsc/Reporting.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ object Reporting {
520520
private val insertDash = "(?=[A-Z][a-z])".r
521521

522522
val all: mutable.Map[String, WarningCategory] = mutable.Map.empty
523-
private def add(c: WarningCategory): Unit = all.put(c.name, c).ensuring(_.isEmpty, s"lint '${c.name}' added twice")
523+
private def add(c: WarningCategory): Unit = all.put(c.name, c).foreach(_ => assert(false, s"lint '${c.name}' added twice"))
524524

525525
object Deprecation extends WarningCategory; add(Deprecation)
526526

src/compiler/scala/tools/nsc/ast/Trees.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,9 @@ trait Trees extends scala.reflect.internal.Trees { self: Global =>
279279

280280
override def traverse(tree: Tree) = {
281281
tree match {
282-
case _: DefTree | Function(_, _) | Template(_, _, _) =>
283-
markLocal(tree)
284-
case _ =>
285-
tree
282+
case _: DefTree | Function(_, _) | Template(_, _, _) => markLocal(tree)
283+
case _ =>
286284
}
287-
288285
tree.traverse(this)
289286
}
290287
}

src/compiler/scala/tools/nsc/backend/jvm/PerRunInit.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ trait PerRunInit {
2525
// so the back end may initialise them in parallel, and ListBuffer is not threadsafe
2626
private val inits = ListBuffer.empty[() => Unit]
2727

28-
def perRunInit(init: => Unit): Unit = inits.synchronized (inits += (() => init))
28+
def perRunInit(init: => Unit): Unit = inits.synchronized[Unit](inits += (() => init))
2929

3030
def initialize(): Unit = inits.synchronized(inits.foreach(_.apply()))
3131
}

src/compiler/scala/tools/nsc/backend/jvm/analysis/AliasingAnalyzer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ class AliasSet(var set: Object /*SmallBitSet | Array[Long]*/, var size: Int) {
492492
}
493493

494494
override def clone(): AliasSet = {
495-
val resSet = (set: @unchecked) match {
495+
val resSet: Object = (set: @unchecked) match {
496496
case s: SmallBitSet => new SmallBitSet(s.a, s.b, s.c, s.d)
497497
case bits: Array[Long] => bits.clone()
498498
}

src/compiler/scala/tools/nsc/backend/jvm/opt/CallGraph.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ abstract class CallGraph {
9696
def removeCallsite(invocation: MethodInsnNode, methodNode: MethodNode): Option[Callsite] = {
9797
val methodCallsites = callsites(methodNode)
9898
val newCallsites = methodCallsites - invocation
99-
if (newCallsites.isEmpty) callsites.remove(methodNode)
99+
if (newCallsites.isEmpty) callsites.subtractOne(methodNode)
100100
else callsites(methodNode) = newCallsites
101101
methodCallsites.get(invocation)
102102
}
@@ -111,7 +111,7 @@ abstract class CallGraph {
111111
def removeClosureInstantiation(indy: InvokeDynamicInsnNode, methodNode: MethodNode): Option[ClosureInstantiation] = {
112112
val methodClosureInits = closureInstantiations(methodNode)
113113
val newClosureInits = methodClosureInits - indy
114-
if (newClosureInits.isEmpty) closureInstantiations.remove(methodNode)
114+
if (newClosureInits.isEmpty) closureInstantiations.subtractOne(methodNode)
115115
else closureInstantiations(methodNode) = newClosureInits
116116
methodClosureInits.get(indy)
117117
}
@@ -122,8 +122,8 @@ abstract class CallGraph {
122122
}
123123

124124
def refresh(methodNode: MethodNode, definingClass: ClassBType): Unit = {
125-
callsites.remove(methodNode)
126-
closureInstantiations.remove(methodNode)
125+
callsites.subtractOne(methodNode)
126+
closureInstantiations.subtractOne(methodNode)
127127
// callsitePositions, inlineAnnotatedCallsites, noInlineAnnotatedCallsites, staticallyResolvedInvokespecial
128128
// are left unchanged. They contain individual instructions, the state for those remains valid in case
129129
// the inliner performs a rollback.

src/compiler/scala/tools/nsc/backend/jvm/opt/CopyProp.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -629,11 +629,11 @@ abstract class CopyProp {
629629

630630
val pairStartStack = new mutable.Stack[(AbstractInsnNode, mutable.ListBuffer[RemovePairDependency])]
631631

632-
def push(insn: AbstractInsnNode) = {
632+
def push(insn: AbstractInsnNode): Unit = {
633633
pairStartStack push ((insn, mutable.ListBuffer.empty))
634634
}
635635

636-
def addDepends(dependency: RemovePairDependency) = if (pairStartStack.nonEmpty) {
636+
def addDepends(dependency: RemovePairDependency): Unit = if (pairStartStack.nonEmpty) {
637637
val (_, depends) = pairStartStack.top
638638
depends += dependency
639639
}

src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ abstract class Inliner {
359359
state.illegalAccessInstructions += instructionMap(ins)
360360
}
361361
val callInsn = r.callsite.callsiteInstruction
362-
state.illegalAccessInstructions.remove(callInsn)
362+
state.illegalAccessInstructions.subtractOne(callInsn)
363363
if (state.illegalAccessInstructions.isEmpty)
364364
state.undoLog = NoUndoLogging
365365
state.inlineLog.logSuccess(r, sizeBefore, method.instructions.size, state.outerCallsite(r.callsite.callsiteInstruction))
@@ -664,7 +664,7 @@ abstract class Inliner {
664664
BackendUtils.clearDceDone(methodNode)
665665
callGraph.refresh(methodNode, ownerClass)
666666

667-
onIndyLambdaImplMethodIfPresent(ownerClass.internalName)(_.remove(methodNode))
667+
onIndyLambdaImplMethodIfPresent(ownerClass.internalName)(_.subtractOne(methodNode))
668668
if (currentIndyLambdaBodyMethods.nonEmpty)
669669
onIndyLambdaImplMethod(ownerClass.internalName)(ms => ms(methodNode) = mutable.Map.empty ++= currentIndyLambdaBodyMethods)
670670
}

src/compiler/scala/tools/nsc/backend/jvm/opt/LocalOpt.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ abstract class LocalOpt {
584584
while (top != -1) {
585585
val insnIndex = deq()
586586
val insn = method.instructions.get(insnIndex)
587-
visited.add(insnIndex)
587+
visited.addOne(insnIndex)
588588

589589
if (insn.getOpcode == -1) { // frames, labels, line numbers
590590
enqInsnIndex(insnIndex + 1)
@@ -1019,7 +1019,7 @@ object LocalOptImpls {
10191019
}
10201020

10211021
def removeJumpFromMap(jump: JumpInsnNode) = {
1022-
jumpInsns.remove(jump)
1022+
jumpInsns.subtractOne(jump)
10231023
_jumpTargets = null
10241024
}
10251025

src/compiler/scala/tools/nsc/classpath/ZipAndJarFileLookupFactory.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ object ZipAndJarClassPathFactory extends ZipAndJarFileLookupFactory {
119119
case pkgFile :: rest =>
120120
val subpackages = getSubpackages(pkgFile)
121121
val fullPkgName = packagePrefix + pkgFile.name
122-
packages.put(fullPkgName, PackageFileInfo(pkgFile, subpackages))
122+
packages.update(fullPkgName, PackageFileInfo(pkgFile, subpackages))
123123
val newPackagePrefix = fullPkgName + "."
124124
subpackagesQueue.enqueue(PackageInfo(newPackagePrefix, subpackages))
125125
loop(rest)
@@ -128,7 +128,7 @@ object ZipAndJarClassPathFactory extends ZipAndJarFileLookupFactory {
128128
loop(filesForPrefix)
129129
}
130130
val subpackages = getSubpackages(file)
131-
packages.put(ClassPath.RootPackage, PackageFileInfo(file, subpackages))
131+
packages.update(ClassPath.RootPackage, PackageFileInfo(file, subpackages))
132132
val infos = mutable.Queue(PackageInfo(ClassPath.RootPackage, subpackages))
133133
traverse(infos)
134134
packages
@@ -225,7 +225,7 @@ final class FileBasedCache[K, T] {
225225
override def run(): Unit = {
226226
cache.synchronized {
227227
if (e.referenceCount.compareAndSet(0, -1)) {
228-
cache.remove(key)
228+
cache.subtractOne(key)
229229
cl.close()
230230
}
231231
}
@@ -294,15 +294,15 @@ final class FileBasedCache[K, T] {
294294
}
295295
val value = create()
296296
val entry = Entry(k, stamps, value)
297-
cache.put(key, entry)
297+
cache.update(key, entry)
298298
closeableRegistry.registerCloseable(referenceCountDecrementer(entry, key))
299299
value
300300
}
301301
case _ =>
302302
// Cache miss
303303
val value = create()
304304
val entry = Entry(k, stamps, value)
305-
cache.put(key, entry)
305+
cache.update(key, entry)
306306
closeableRegistry.registerCloseable(referenceCountDecrementer(entry, key))
307307
value
308308
}

src/compiler/scala/tools/nsc/io/Jar.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ class Jar(file: File) extends AbstractIterable[JarEntry] {
6464
jarFile getEntry name match {
6565
case null => f(None)
6666
case entry =>
67-
val in = Some(jarFile getInputStream entry)
67+
val in = Some(jarFile.getInputStream(entry))
6868
try f(in)
69-
finally in map (_.close())
69+
finally in.foreach(_.close())
7070
}
7171
try apply() finally jarFile.close()
7272
}

src/compiler/scala/tools/nsc/transform/Fields.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,8 @@ abstract class Fields extends InfoTransform with ast.TreeDSL with TypingTransfor
187187
// (in traits, getters must also hold annotations that target the underlying field,
188188
// because the latter won't be created until the trait is mixed into a class)
189189
// TODO do bean getters need special treatment to suppress field-targeting annotations in traits?
190-
def dropFieldAnnotationsFromGetter(sym: Symbol) =
191-
sym setAnnotations (sym.annotations filter AnnotationInfo.mkFilter(GetterTargetClass, defaultRetention = false))
190+
def dropFieldAnnotationsFromGetter(sym: Symbol): Unit =
191+
sym.setAnnotations(sym.annotations.filter(AnnotationInfo.mkFilter(GetterTargetClass, defaultRetention = false)))
192192

193193
def symbolAnnotationsTargetFieldAndGetter(sym: Symbol): Boolean = sym.isGetter && (sym.isLazy || sym.owner.isTrait)
194194

src/compiler/scala/tools/nsc/transform/async/AnfTransform.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,8 @@ private[async] trait AnfTransform extends TransformUtils {
269269
onTail(ts)
270270
case i =>
271271
val group = new Array[T](i + 1)
272-
ts.copyToArray(group)
272+
@annotation.unused val copied = ts.copyToArray(group)
273+
//assert(copied == group.length, s"$copied != ${group.length}")
273274
onGroup(group)
274275
foreachGroupsEndingWith(ts.drop(i + 1))(isGroupEnd, onGroup, onTail)
275276
}

src/compiler/scala/tools/nsc/transform/async/AsyncNames.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ final class AsyncNames[U <: reflect.internal.Names with Singleton](val u: U) {
7070
if (seenPrefixes.contains(name)) {
7171
TermName(freshNameCreator.newName(name.toStringWithSuffix("$")))
7272
} else {
73-
seenPrefixes.add(name)
73+
seenPrefixes.addOne(name)
7474
name
7575
}
7676
}
7777
final def freshenIfNeeded(name: TypeName): TypeName = {
7878
if (seenPrefixes.contains(name)) {
7979
TypeName(freshNameCreator.newName(name.toStringWithSuffix("$")))
8080
} else {
81-
seenPrefixes.add(name)
81+
seenPrefixes.addOne(name)
8282
name
8383
}
8484
}

src/compiler/scala/tools/nsc/transform/async/ExprBuilder.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ trait ExprBuilder extends TransformUtils with AsyncAnalysis {
198198

199199
addStats()
200200

201-
private def addState(state: AsyncState): AsyncState = {
201+
private def addState(state: AsyncState): state.type = {
202202
assert(building, "must be building to add state")
203203
assert(!statesMap.contains(state.state), "Duplicate state: " + state)
204204
statesMap(state.state) = state
@@ -490,7 +490,7 @@ trait ExprBuilder extends TransformUtils with AsyncAnalysis {
490490
val (initial :: Nil, rest) = all.partition(_.state == blockBuilder.startState): @unchecked
491491
val map = all.iterator.map(x => (x.state, x)).toMap
492492
val seen = mutable.HashSet[Int]()
493-
seen.add(all.last.state)
493+
seen.addOne(all.last.state)
494494
def followEmptyState(state: AsyncState): AsyncState = if (state.isEmpty && state.nextStates.size == 1) {
495495
val next = state.nextStates(0)
496496
if (next == blockBuilder.endState) state
@@ -506,7 +506,7 @@ trait ExprBuilder extends TransformUtils with AsyncAnalysis {
506506
}
507507
def loop(state: AsyncState): Unit = {
508508
if (!emptyReplacements.contains(state.state))
509-
seen.add(state.state)
509+
seen.addOne(state.state)
510510
for (i <- state.nextStates if !seen.contains(i) && i != StateAssigner.Terminal) {
511511
loop(map(i))
512512
}

src/compiler/scala/tools/nsc/transform/patmat/Logic.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ trait Logic extends Debugging {
230230
checkPair(a, b) || checkPair(a, c) || checkPair(b, c)
231231
} else {
232232
val ops = new Array[Prop](size)
233-
ops0.copyToArray(ops)
233+
@annotation.unused val copied = ops0.copyToArray(ops)
234+
//assert(copied == ops.length, "")
234235
var i = 0
235236
val len = ops.length
236237
while (i < len - 1) {

src/compiler/scala/tools/nsc/transform/patmat/PatternExpansion.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ trait PatternExpansion {
241241
val offeringString = if (isErroneous) "<error>" else productTypes match {
242242
case tps if isSeq => (tps.map(_.toString) :+ s"${elementType}*").mkString("(", ", ", ")")
243243
case Nil => "Boolean"
244-
case tp :: Nil => tp
244+
case tp :: Nil => tp.toString
245245
case tps => tps.mkString("(", ", ", ")")
246246
}
247247
val offerString = if (isErroneous) "" else s" offering $offeringString"

src/compiler/scala/tools/nsc/transform/patmat/Solving.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,8 @@ trait Solving extends Logic {
356356
// scala/bug#6942:
357357
// CNF(P1 /\ ... /\ PN) == CNF(P1) ++ CNF(...) ++ CNF(PN)
358358
val cnfs = new Array[Solvable](props.size)
359-
props.iterator.map(x => cnfFor(x)).copyToArray(cnfs)
359+
@annotation.unused val copied = props.iterator.map(x => cnfFor(x)).copyToArray(cnfs)
360+
//assert(copied == cnfs.length, "")
360361
new Solvable(cnfs.flatten[Clause](_.cnf, reflect.classTag[Clause]), cnfs.head.symbolMapping)
361362
case p =>
362363
cnfFor(p)

src/compiler/scala/tools/nsc/typechecker/Analyzer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ trait Analyzer extends AnyRef
6868
case ModuleDef(_, _, _) =>
6969
if (tree.symbol.name == nme.PACKAGEkw) {
7070
// we've actually got a source file
71-
deferredOpen.remove(tree.symbol.owner)
71+
deferredOpen.subtractOne(tree.symbol.owner)
7272

7373
openPackageModule(tree.symbol, tree.symbol.owner)
7474
}

0 commit comments

Comments
 (0)