23. name hashing
• step 5
API changes: compare the
signature information before and
after compilation
A.scala B.scala C1.scala
C3.scala
C2.scala
C4.scala
24. name hashing
• step 6
member ref: invalidate only if a
"used name" is affected
A.scala B.scala C1.scala
C3.scala
C2.scala
C4.scala
25. name hashing
package example
class B {
def foo: Unit = {
val a = new A
a.something
}
}
package example
class A {
def something: Int = 0
}
27. name hashing
package example
class B {
def foo: Unit = {
val a = new A
a.something
}
}
package example
class A {
// was 0
def something: Int = 1
}
• body change doesn't matter
28. name hashing
package example
class B {
def foo: Unit = {
val a = new A
a.something
}
}
package example
class A {
def something: Int = 0
// new
def somethingElse: Int = 1
}
• unused names do not matter
45. compiler integration
• incremental compilation as a first-class feature
• test for specific bridge
• no more source downloading
• evolve bridge together with the language