Skip to content

Commit 04536a3

Browse files
committed
Merge pull request scala#1016 from hubertp/2.10.x-issue/5031
Fixed SI-5031. Only consider classes when looking for companion class.
2 parents f429c64 + 2a14dd2 commit 04536a3

File tree

8 files changed

+28
-5
lines changed

8 files changed

+28
-5
lines changed

src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ package doc
88
package model
99

1010
import scala.collection._
11-
import language.reflectiveCalls
1211

1312
object IndexModelFactory {
1413

src/reflect/scala/reflect/internal/Symbols.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1760,7 +1760,6 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
17601760

17611761
/** Is this symbol defined in the same scope and compilation unit as `that` symbol? */
17621762
def isCoDefinedWith(that: Symbol) = {
1763-
import language.reflectiveCalls
17641763
(this.rawInfo ne NoType) &&
17651764
(this.effectiveOwner == that.effectiveOwner) && {
17661765
!this.effectiveOwner.isPackageClass ||
@@ -2431,7 +2430,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
24312430

24322431
override def moduleClass = referenced
24332432
override def companionClass =
2434-
flatOwnerInfo.decl(name.toTypeName).suchThat(_ isCoDefinedWith this)
2433+
flatOwnerInfo.decl(name.toTypeName).suchThat(sym => sym.isClass && (sym isCoDefinedWith this))
24352434

24362435
override def owner = {
24372436
Statistics.incCounter(ownerCount)
@@ -2796,7 +2795,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
27962795
*/
27972796
protected final def companionModule0: Symbol =
27982797
flatOwnerInfo.decl(name.toTermName).suchThat(
2799-
sym => sym.hasFlag(MODULE) && (sym isCoDefinedWith this) && !sym.isMethod)
2798+
sym => sym.isModule && (sym isCoDefinedWith this) && !sym.isMethod)
28002799

28012800
override def companionModule = companionModule0
28022801
override def companionSymbol = companionModule0
@@ -3119,7 +3118,6 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
31193118
}
31203119

31213120
case class InvalidCompanions(sym1: Symbol, sym2: Symbol) extends Throwable({
3122-
import language.reflectiveCalls
31233121
"Companions '" + sym1 + "' and '" + sym2 + "' must be defined in same file:\n" +
31243122
" Found in " + sym1.sourceFile.canonicalPath + " and " + sym2.sourceFile.canonicalPath
31253123
}) {

test/files/neg/t5031.check

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Id.scala:3: error: Companions 'class Test' and 'object Test' must be defined in same file:
2+
Found in t5031/package.scala and t5031/Id.scala
3+
object Test
4+
^
5+
one error found

test/files/neg/t5031/Id.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package t5031
2+
3+
object Test
4+

test/files/neg/t5031/package.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package object t5031 {
2+
class Test
3+
}

test/files/pos/t5031/Id.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package t5031
2+
3+
object ID
4+

test/files/pos/t5031/package.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package object t5031 {
2+
type ID = Int
3+
}

test/files/pos/t5031_2.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package object t5031 {
2+
class ID
3+
}
4+
5+
package t5031 {
6+
object ID
7+
}

0 commit comments

Comments
 (0)