summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-12-04 09:55:21 -0800
committerPaul Phillips <paulp@improving.org>2012-12-05 09:40:16 -0800
commite4d1d930693ac75d8eb64c2c3c69f2fc22bec739 (patch)
tree6baec81832c0b3379bb757e2dd503a8387822762 /src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
parentfd57069a3a49de1757a518b573a0cd8cb98bbbd5 (diff)
downloadscala-e4d1d930693ac75d8eb64c2c3c69f2fc22bec739.tar.gz
scala-e4d1d930693ac75d8eb64c2c3c69f2fc22bec739.tar.bz2
scala-e4d1d930693ac75d8eb64c2c3c69f2fc22bec739.zip
Warn when generated classfiles differ only in case.
We should most likely prohibit it completely, but warning is a start.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
index 6eb05c4402..61f3721da1 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
@@ -160,7 +160,14 @@ abstract class GenASM extends SubComponent with BytecodeWriters {
}
// For predictably ordered error messages.
- var sortedClasses = classes.values.toList sortBy ("" + _.symbol.fullName)
+ var sortedClasses = classes.values.toList sortBy (_.symbol.fullName)
+
+ // Warn when classes will overwrite one another on case-insensitive systems.
+ for ((_, v1 :: v2 :: _) <- sortedClasses groupBy (_.symbol.javaClassName.toString.toLowerCase)) {
+ v1.cunit.warning(v1.symbol.pos,
+ s"Class ${v1.symbol.javaClassName} differs only in case from ${v2.symbol.javaClassName}. " +
+ "Such classes will overwrite one another on case-insensitive filesystems.")
+ }
debuglog("Created new bytecode generator for " + classes.size + " classes.")
val bytecodeWriter = initBytecodeWriter(sortedClasses filter isJavaEntryPoint)