name clash when several files of the same package has different paths but the same name #KT-2713 Fixed

This commit is contained in:
Alex Tkachman
2012-09-11 17:05:23 +03:00
parent ec549895e8
commit 6a0e4d1593
6 changed files with 18 additions and 7 deletions
@@ -301,6 +301,7 @@ public class NamespaceCodegen extends GenerationStateAware {
}
// dollar sign in the end is to prevent synthetic class from having "Test" or other parseable suffix
return namespaceInternalName + "$src$" + name.substring(substringFrom, substringTo) + "$";
// path hashCode to prevent same name / different path collision
return namespaceInternalName + "$src$" + name.substring(substringFrom, substringTo) + "$" + file.getVirtualFile().getCanonicalPath().hashCode();
}
}
@@ -0,0 +1 @@
fun box() = box1() + "K"
@@ -0,0 +1 @@
fun box1() = "O"
@@ -27,9 +27,10 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.ref.JetTypeName;
import org.jetbrains.jet.parsing.JetParsingTest;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -95,7 +96,7 @@ public class CodegenTestFiles {
try {
String content = JetTestUtils.doLoadFile(JetParsingTest.getTestDataDir() + "/codegen/", name);
int i = name.lastIndexOf('/');
name = name.substring(i+1);
//name = name.substring(i+1);
JetFile file = JetTestUtils.createFile(name, content, project);
files.add(file);
} catch (IOException e) {
@@ -37,4 +37,8 @@ public class MultiFileGenTest extends CodegenTestCase {
public void testNestedPackagesVisibility() {
blackBoxMultiFile("/multi/nestedPackages/box.kt", "/multi/nestedPackages/a.kt");
}
public void testSameNames() {
blackBoxMultiFile("/multi/same/1/box.kt", "/multi/same/2/box.kt");
}
}