From 18db741b06a1970aed2d31e7878701727a9d45af Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Mon, 25 Nov 2013 19:39:35 +0400 Subject: [PATCH 1/7] fixed PY-11476 No error given for mismatched accolade and squarebracket --- .../com/jetbrains/python/PyBundle.properties | 1 + .../python/parsing/ExpressionParsing.java | 4 ++-- python/testData/psi/NotClosedBraceDict.py | 3 +++ python/testData/psi/NotClosedBraceDict.txt | 24 +++++++++++++++++++ python/testData/psi/NotClosedBraceSet.py | 1 + python/testData/psi/NotClosedBraceSet.txt | 17 +++++++++++++ .../jetbrains/python/PythonParsingTest.java | 8 +++++++ 7 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 python/testData/psi/NotClosedBraceDict.py create mode 100644 python/testData/psi/NotClosedBraceDict.txt create mode 100644 python/testData/psi/NotClosedBraceSet.py create mode 100644 python/testData/psi/NotClosedBraceSet.txt diff --git a/python/src/com/jetbrains/python/PyBundle.properties b/python/src/com/jetbrains/python/PyBundle.properties index 5ee3ef7d582e..28289e0443db 100644 --- a/python/src/com/jetbrains/python/PyBundle.properties +++ b/python/src/com/jetbrains/python/PyBundle.properties @@ -637,6 +637,7 @@ PARSE.expected.comma=',' expected PARSE.expected.colon=':' expected PARSE.expected.rpar=')' expected PARSE.expected.lpar='(' expected +PARSE.expected.rbrace='}' expected PARSE.expected.tick='`' (backtick) expected PARSE.expected.name=name expected PARSE.expected.colon.or.rbracket=':' or ']' expected diff --git a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java index 65c791a33aed..790b1556fa74 100644 --- a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java +++ b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java @@ -236,7 +236,7 @@ public class ExpressionParsing extends Parsing { break; } } - myBuilder.advanceLexer(); + checkMatches(PyTokenTypes.RBRACE, message("PARSE.expected.rbrace")); startMarker.done(PyElementTypes.DICT_LITERAL_EXPRESSION); } } @@ -264,7 +264,7 @@ public class ExpressionParsing extends Parsing { break; } } - myBuilder.advanceLexer(); + checkMatches(PyTokenTypes.RBRACE, message("PARSE.expected.rbrace")); startMarker.done(PyElementTypes.SET_LITERAL_EXPRESSION); } diff --git a/python/testData/psi/NotClosedBraceDict.py b/python/testData/psi/NotClosedBraceDict.py new file mode 100644 index 000000000000..9a726249b003 --- /dev/null +++ b/python/testData/psi/NotClosedBraceDict.py @@ -0,0 +1,3 @@ +a = { + 'b': 'c', + ] \ No newline at end of file diff --git a/python/testData/psi/NotClosedBraceDict.txt b/python/testData/psi/NotClosedBraceDict.txt new file mode 100644 index 000000000000..1222ea39bdc6 --- /dev/null +++ b/python/testData/psi/NotClosedBraceDict.txt @@ -0,0 +1,24 @@ +PyFile:NotClosedBraceDict.py + PyAssignmentStatement + PyTargetExpression: a + PsiElement(Py:IDENTIFIER)('a') + PsiWhiteSpace(' ') + PsiElement(Py:EQ)('=') + PsiWhiteSpace(' ') + PyDictLiteralExpression + PsiElement(Py:LBRACE)('{') + PsiWhiteSpace('\n ') + PyKeyValueExpression + PyStringLiteralExpression: b + PsiElement(Py:SINGLE_QUOTED_STRING)(''b'') + PsiElement(Py:COLON)(':') + PsiWhiteSpace(' ') + PyStringLiteralExpression: c + PsiElement(Py:SINGLE_QUOTED_STRING)(''c'') + PsiElement(Py:COMMA)(',') + PsiErrorElement:'}' expected + + PsiWhiteSpace('\n ') + PsiElement(Py:RBRACKET)(']') + PsiErrorElement:Statement expected, found Py:RBRACKET + \ No newline at end of file diff --git a/python/testData/psi/NotClosedBraceSet.py b/python/testData/psi/NotClosedBraceSet.py new file mode 100644 index 000000000000..71817f2a3635 --- /dev/null +++ b/python/testData/psi/NotClosedBraceSet.py @@ -0,0 +1 @@ +a = {'b',] \ No newline at end of file diff --git a/python/testData/psi/NotClosedBraceSet.txt b/python/testData/psi/NotClosedBraceSet.txt new file mode 100644 index 000000000000..95b97f058075 --- /dev/null +++ b/python/testData/psi/NotClosedBraceSet.txt @@ -0,0 +1,17 @@ +PyFile:NotClosedBraceSet.py + PyAssignmentStatement + PyTargetExpression: a + PsiElement(Py:IDENTIFIER)('a') + PsiWhiteSpace(' ') + PsiElement(Py:EQ)('=') + PsiWhiteSpace(' ') + PySetLiteralExpression + PsiElement(Py:LBRACE)('{') + PyStringLiteralExpression: b + PsiElement(Py:SINGLE_QUOTED_STRING)(''b'') + PsiElement(Py:COMMA)(',') + PsiErrorElement:'}' expected + + PsiElement(Py:RBRACKET)(']') + PsiErrorElement:Statement expected, found Py:RBRACKET + \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonParsingTest.java b/python/testSrc/com/jetbrains/python/PythonParsingTest.java index 669ac3d3906c..9f612a2539db 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -430,6 +430,14 @@ public class PythonParsingTest extends ParsingTestCase { doTest(); } + public void testNotClosedBraceDict() { + doTest(); + } + + public void testNotClosedBraceSet() { + doTest(LanguageLevel.PYTHON33); + } + public void doTest(LanguageLevel languageLevel) { LanguageLevel prev = myLanguageLevel; myLanguageLevel = languageLevel; From afd0517bb610d735f397b327936aa2c3b63dc709 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Mon, 25 Nov 2013 20:06:29 +0400 Subject: [PATCH 2/7] fixed test data --- .../completion/identifiersInPlainDocstring.after.py | 2 -- .../com/jetbrains/python/PythonCompletionTest.java | 9 +++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 python/testData/completion/identifiersInPlainDocstring.after.py diff --git a/python/testData/completion/identifiersInPlainDocstring.after.py b/python/testData/completion/identifiersInPlainDocstring.after.py deleted file mode 100644 index 440570bceefc..000000000000 --- a/python/testData/completion/identifiersInPlainDocstring.after.py +++ /dev/null @@ -1,2 +0,0 @@ -def foo(bar): - """ Variable bar """ \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index 4f93ccad148c..da7888e80332 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -15,9 +15,12 @@ */ package com.jetbrains.python; +import com.google.common.collect.Lists; import com.intellij.codeInsight.completion.impl.CamelHumpMatcher; +import com.intellij.codeInsight.lookup.AutoCompletionPolicy; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.jetbrains.python.documentation.DocStringFormat; import com.jetbrains.python.documentation.PyDocumentationSettings; import com.jetbrains.python.fixtures.PyTestCase; @@ -387,8 +390,10 @@ public class PythonCompletionTest extends PyTestCase { final PyDocumentationSettings settings = PyDocumentationSettings.getInstance(myFixture.getModule()); settings.setFormat(DocStringFormat.PLAIN); myFixture.configureByFile("completion/identifiersInPlainDocstring.py"); - myFixture.completeBasic(); - myFixture.checkResultByFile("completion/identifiersInPlainDocstring.after.py"); + final LookupElement[] elements = myFixture.completeBasic(); + assertNotNull(elements); + assertContainsElements(Lists.newArrayList(elements), + LookupElementBuilder.create("bar").withAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE)); } public void testPep328Completion() { // PY-3409 From 8c35e68162e0801b6e31c5e967121ced35bf53de Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 25 Nov 2013 21:10:33 +0400 Subject: [PATCH 3/7] IDEA-116452 "Resolve workspace artifacts" option doesn't work with Maven 3.1.x +review CR-IC --- build/scripts/layouts.gant | 7 ++ .../eclipse-aether/aether-api-0.9.0.M2.jar | Bin 0 -> 133957 bytes .../maven-artifact-resolver-m31.iml | 40 +++++++++++ .../src/META-INF/plexus/components.xml | 12 ++++ .../IntelliJWorkspaceReaderM31.java | 62 ++++++++++++++++++ .../MavenArtifactResolvedM31RtMarker.java | 22 +++++++ plugins/maven/maven.iml | 1 + .../execution/MavenExternalParameters.java | 22 +++++-- 8 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar create mode 100644 plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml create mode 100644 plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml create mode 100644 plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java create mode 100644 plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index fb0427ec800e..27e02a867918 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -299,6 +299,13 @@ public def layoutCommunityPlugins(String home) { } } + jar("artifact-resolver-m31.jar") { + module("maven-artifact-resolver-m31") + module("maven-artifact-resolver-m2") { + include(name: 'org/jetbrains/idea/maven/artifactResolver/common/*') + } + } + dir("maven3") { fileset(dir: "$home/plugins/maven/maven3-server-impl/lib") {include(name: "*.jar")} fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/lib") {include(name: "*.jar")} diff --git a/plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar b/plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar new file mode 100644 index 0000000000000000000000000000000000000000..e5b122cec252e639aa346aeb9ae12daf6e80eaf5 GIT binary patch literal 133957 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%0D~L=fi`R_7{dRR<8THSTLhnX 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 literal 0 HcmV?d00001 diff --git a/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml b/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml new file mode 100644 index 000000000000..3d45f6bed168 --- /dev/null +++ b/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml b/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml new file mode 100644 index 000000000000..d4d29b1060f7 --- /dev/null +++ b/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml @@ -0,0 +1,12 @@ + + + + + org.eclipse.aether.repository.WorkspaceReader + ide + org.jetbrains.idea.maven.artifactResolver.IntelliJWorkspaceReaderM31 + + false + + + diff --git a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java new file mode 100644 index 000000000000..5f5386ca3a1f --- /dev/null +++ b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java @@ -0,0 +1,62 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.maven.artifactResolver; + +import org.codehaus.plexus.component.annotations.Component; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.repository.WorkspaceReader; +import org.eclipse.aether.repository.WorkspaceRepository; +import org.jetbrains.idea.maven.artifactResolver.common.MavenModuleMap; + +import java.io.File; +import java.util.Collections; +import java.util.List; + +/** + * @author Sergey Evdokimov + */ +@Component(role = WorkspaceReader.class, hint = "ide") +public class IntelliJWorkspaceReaderM31 implements WorkspaceReader { + + private final WorkspaceRepository myWorkspaceRepository; + + public IntelliJWorkspaceReaderM31() { + myWorkspaceRepository = new WorkspaceRepository("ide", getClass()); + } + + @Override + public int hashCode() { + return 311; + } + + @Override + public boolean equals(Object o) { + return o instanceof IntelliJWorkspaceReaderM31; + } + + public WorkspaceRepository getRepository() { + return myWorkspaceRepository; + } + + public File findArtifact(Artifact artifact) { + return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(), + artifact.getBaseVersion()); + } + + public List findVersions(Artifact artifact) { + return Collections.emptyList(); + } +} diff --git a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java new file mode 100644 index 000000000000..ad15baf8aae2 --- /dev/null +++ b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java @@ -0,0 +1,22 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.maven.artifactResolver; + +/** + * @author Sergey Evdokimov + */ +public class MavenArtifactResolvedM31RtMarker { +} diff --git a/plugins/maven/maven.iml b/plugins/maven/maven.iml index 8c58bb720940..c15aa891282b 100644 --- a/plugins/maven/maven.iml +++ b/plugins/maven/maven.iml @@ -59,6 +59,7 @@ + diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java index a8f4606d176c..d5f11ad62408 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java @@ -47,6 +47,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM2RtMarker; +import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM31RtMarker; import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM3RtMarker; import org.jetbrains.idea.maven.artifactResolver.common.MavenModuleMap; import org.jetbrains.idea.maven.project.MavenGeneralSettings; @@ -126,7 +127,7 @@ public class MavenExternalParameters { if (project != null && parameters.isResolveToWorkspace()) { try { - String resolverJar = getArtifactResolverJar(MavenUtil.isMaven3(mavenHome)); + String resolverJar = getArtifactResolverJar(MavenUtil.getMavenVersion(mavenHome)); confFile = patchConfFile(confFile, resolverJar); File modulesPathsFile = dumpModulesPaths(project); @@ -196,11 +197,24 @@ public class MavenExternalParameters { finally { sc.close(); } - } - private static String getArtifactResolverJar(boolean isMaven3) throws IOException { - Class marker = isMaven3 ? MavenArtifactResolvedM3RtMarker.class : MavenArtifactResolvedM2RtMarker.class; + private static String getArtifactResolverJar(@Nullable String mavenVersion) throws IOException { + boolean isMaven3; + Class marker; + + if (mavenVersion != null && mavenVersion.compareTo("3.1.0") >= 0) { + isMaven3 = true; + marker = MavenArtifactResolvedM31RtMarker.class; + } + else if (mavenVersion != null && mavenVersion.compareTo("3.0.0") >= 0) { + isMaven3 = true; + marker = MavenArtifactResolvedM3RtMarker.class; + } + else { + isMaven3 = false; + marker = MavenArtifactResolvedM2RtMarker.class; + } File classDirOrJar = new File(PathUtil.getJarPathForClass(marker)); From 12909239c45289f55c9649e02c10383391542ac4 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 25 Nov 2013 18:33:33 +0100 Subject: [PATCH 4/7] handling cases when added class hides imported class with the same short name (IDEA-116914 Incremental compilation of Java project fails) --- .../common/addClassHidingImportedClass.log | 11 ++ .../src/package1/A.java | 7 ++ .../src/package2/A.java.new | 7 ++ .../src/package2/B.java | 6 ++ .../src/package3/C.java | 14 +++ .../java/dependencyView/ClassRepr.java | 21 +++- .../java/dependencyView/Mappings.java | 101 ++++++++++++++---- .../incremental/storage/BuildDataManager.java | 2 +- .../org/jetbrains/ether/CommonTest.java | 5 + 9 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass.log create mode 100644 java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package1/A.java create mode 100644 java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/A.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/B.java create mode 100644 java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package3/C.java diff --git a/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass.log b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass.log new file mode 100644 index 000000000000..228bc41f8f7e --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass.log @@ -0,0 +1,11 @@ +Compiling files: +src/package2/A.java +End of files +Cleaning output files: +out/production/AddClassHidingImportedClass/package2/B.class +out/production/AddClassHidingImportedClass/package3/C.class +End of files +Compiling files: +src/package2/B.java +src/package3/C.java +End of files diff --git a/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package1/A.java b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package1/A.java new file mode 100644 index 000000000000..a61ecd9b2705 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package1/A.java @@ -0,0 +1,7 @@ +package package1; + +public class A { + public static class D { + public final String s = new String("package1"); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/A.java.new b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/A.java.new new file mode 100644 index 000000000000..98b0feeffca2 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/A.java.new @@ -0,0 +1,7 @@ +package package2; + +public class A { + public static class D { + public final String s = new String("package2"); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/B.java b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/B.java new file mode 100644 index 000000000000..a32b694a09c8 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package2/B.java @@ -0,0 +1,6 @@ +package package2; +import package1.*; + +public class B extends A{ + +} diff --git a/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package3/C.java b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package3/C.java new file mode 100644 index 000000000000..04d86d390ea6 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/common/addClassHidingImportedClass/src/package3/C.java @@ -0,0 +1,14 @@ +package package3; + +import package2.B; + +public class C { + + public B.D p; + + public String get() { + p = new B.D(); + return p.s; + } + +} diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassRepr.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassRepr.java index fdc84abf785f..154d5daa6215 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassRepr.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassRepr.java @@ -321,15 +321,17 @@ public class ClassRepr extends Proto { } public String getPackageName() { - return getPackageName(name); + final String strValue = myContext.getValue(name); + return strValue != null? getPackageName(strValue) : null; } - public String getPackageName(final int s) { - return getPackageName(myContext.getValue(s)); + public String getShortName() { + final String strValue = myContext.getValue(name); + return strValue != null? getShortName(strValue) : null; } @NotNull - public static String getPackageName(final String raw) { + public static String getPackageName(@NotNull final String raw) { final int index = raw.lastIndexOf('/'); if (index == -1) { @@ -339,6 +341,17 @@ public class ClassRepr extends Proto { return raw.substring(0, index); } + @NotNull + public static String getShortName(@NotNull final String fqName) { + final int index = fqName.lastIndexOf('/'); + + if (index == -1) { + return fqName; + } + + return fqName.substring(index + 1); + } + @Nullable public FieldRepr findField(final int name) { for (FieldRepr f : myFields) { diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java index 29c92aa7a916..8d178ad46990 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java @@ -45,6 +45,7 @@ public class Mappings { private final static String CLASS_TO_SUBCLASSES = "classToSubclasses.tab"; private final static String CLASS_TO_CLASS = "classToClass.tab"; + private final static String SHORT_NAMES = "shortNames.tab"; private final static String SOURCE_TO_CLASS = "sourceToClass.tab"; private final static String CLASS_TO_SOURCE = "classToSource.tab"; private static final IntInlineKeyDescriptor INT_KEY_DESCRIPTOR = new IntInlineKeyDescriptor(); @@ -65,6 +66,7 @@ public class Mappings { private final TIntHashSet myChangedClasses; private final THashSet myChangedFiles; private final Set myDeletedClasses; + private final Set myAddedClasses; private final Object myLock; private final File myRootDir; @@ -83,6 +85,10 @@ public class Mappings { private IntIntMultiMaplet myClassToClassDependency; private ObjectObjectMultiMaplet mySourceFileToClasses; private IntObjectMaplet myClassToSourceFile; + /** + * [short className] -> list of FQ names + */ + private IntIntMultiMaplet myShortClassNameIndex; private IntIntTransientMultiMaplet myRemovedSuperClasses; private IntIntTransientMultiMaplet myAddedSuperClasses; @@ -96,6 +102,7 @@ public class Mappings { myChangedClasses = new TIntHashSet(DEFAULT_SET_CAPACITY, DEFAULT_SET_LOAD_FACTOR); myChangedFiles = new THashSet(FileUtil.FILE_HASHING_STRATEGY); myDeletedClasses = new HashSet(DEFAULT_SET_CAPACITY, DEFAULT_SET_LOAD_FACTOR); + myAddedClasses = new HashSet(DEFAULT_SET_CAPACITY, DEFAULT_SET_LOAD_FACTOR); myDeltaIsTransient = base.myDeltaIsTransient; myRootDir = new File(FileUtil.toSystemIndependentName(base.myRootDir.getAbsolutePath()) + File.separatorChar + "myDelta"); myContext = base.myContext; @@ -112,6 +119,7 @@ public class Mappings { myChangedClasses = null; myChangedFiles = null; myDeletedClasses = null; + myAddedClasses = null; myDeltaIsTransient = transientDelta; myRootDir = rootDir; createImplementation(); @@ -132,6 +140,7 @@ public class Mappings { if (myIsDelta && myDeltaIsTransient) { myClassToSubclasses = new IntIntTransientMultiMaplet(); myClassToClassDependency = new IntIntTransientMultiMaplet(); + myShortClassNameIndex = null; mySourceFileToClasses = new ObjectObjectTransientMultiMaplet(FileUtil.FILE_HASHING_STRATEGY, ourClassSetConstructor); myClassToSourceFile = new IntObjectTransientMaplet(); } @@ -141,6 +150,7 @@ public class Mappings { } myClassToSubclasses = new IntIntPersistentMultiMaplet(DependencyContext.getTableFile(myRootDir, CLASS_TO_SUBCLASSES), INT_KEY_DESCRIPTOR); myClassToClassDependency = new IntIntPersistentMultiMaplet(DependencyContext.getTableFile(myRootDir, CLASS_TO_CLASS), INT_KEY_DESCRIPTOR); + myShortClassNameIndex = myIsDelta? null : new IntIntPersistentMultiMaplet(DependencyContext.getTableFile(myRootDir, SHORT_NAMES), INT_KEY_DESCRIPTOR); mySourceFileToClasses = new ObjectObjectPersistentMultiMaplet( DependencyContext.getTableFile(myRootDir, SOURCE_TO_CLASS), new FileKeyDescriptor(), ClassRepr.externalizer(myContext), ourClassSetConstructor @@ -1788,36 +1798,51 @@ public class Mappings { for (final ClassRepr c : addedClasses) { debug("Class name: ", c.name); - myDelta.addChangedClass(c.name); + myDelta.addAddedClass(c); for (final int sup : c.getSupers()) { myDelta.registerAddedSuperClass(c.name, sup); } - if (!myEasyMode) { - final TIntHashSet depClasses = myClassToClassDependency.get(c.name); - - if (depClasses != null) { - depClasses.forEach(new TIntProcedure() { - @Override - public boolean execute(int depClass) { - final File fName = myClassToSourceFile.get(depClass); - if (fName != null) { - if (myFilter == null || myFilter.accept(fName)) { - debug("Adding dependent file ", fName); - myAffectedFiles.add(fName); - } - } - return true; - } - }); + if (!myEasyMode && !c.isAnonymous() && !c.isLocal()) { + final TIntHashSet toAffect = new TIntHashSet(); + toAffect.add(c.name); + final TIntHashSet classes = myShortClassNameIndex.get(myContext.get(c.getShortName())); + if (classes != null) { + // affecting dependencies on all other classes with the same short name + toAffect.addAll(classes.toArray()); } + toAffect.forEach(new TIntProcedure() { + public boolean execute(int qName) { + final TIntHashSet depClasses = myClassToClassDependency.get(qName); + if (depClasses != null) { + affectCorrespondingSourceFiles(depClasses); + } + return true; + } + }); } } debug("End of added classes processing."); } + private void affectCorrespondingSourceFiles(TIntHashSet toAffect) { + toAffect.forEach(new TIntProcedure() { + @Override + public boolean execute(int depClass) { + final File fName = myClassToSourceFile.get(depClass); + if (fName != null) { + if (myFilter == null || myFilter.accept(fName)) { + debug("Adding dependent file ", fName); + myAffectedFiles.add(fName); + } + } + return true; + } + }); + } + private void calculateAffectedFiles(final DiffState state) { debug("Checking dependent classes:"); @@ -1979,10 +2004,7 @@ public class Mappings { } } - private void cleanupRemovedClass(final Mappings delta, - @NotNull final ClassRepr cr, - final Set usages, - final IntIntMultiMaplet dependenciesTrashBin) { + private void cleanupRemovedClass(final Mappings delta, @NotNull final ClassRepr cr, final Set usages, final IntIntMultiMaplet dependenciesTrashBin) { final int className = cr.name; for (final int superSomething : cr.getSupers()) { @@ -1994,6 +2016,9 @@ public class Mappings { myClassToClassDependency.remove(className); myClassToSubclasses.remove(className); myClassToSourceFile.remove(className); + if (!cr.isLocal() && !cr.isAnonymous()) { + myShortClassNameIndex.removeFrom(myContext.get(cr.getShortName()), className); + } } public void integrate(final Mappings delta) { @@ -2025,6 +2050,11 @@ public class Mappings { for (final ClassRepr repr : delta.getDeletedClasses()) { cleanupRemovedClass(delta, repr, repr.getUsages(), dependenciesTrashBin); } + for (ClassRepr repr : delta.getAddedClasses()) { + if (!repr.isAnonymous() && !repr.isLocal()) { + myShortClassNameIndex.put(myContext.get(repr.getShortName()), repr.name); + } + } final TIntHashSet superClasses = new TIntHashSet(); final IntIntTransientMultiMaplet addedSuperClasses = delta.getAddedSuperClasses(); @@ -2090,6 +2120,16 @@ public class Mappings { myClassToSubclasses.putAll(delta.myClassToSubclasses); myClassToSourceFile.putAll(delta.myClassToSourceFile); mySourceFileToClasses.replaceAll(delta.mySourceFileToClasses); + delta.mySourceFileToClasses.forEachEntry(new TObjectObjectProcedure>() { + public boolean execute(File src, Collection classes) { + for (ClassRepr repr : classes) { + if (!repr.isAnonymous() && !repr.isLocal()) { + myShortClassNameIndex.put(myContext.get(repr.getShortName()), repr.name); + } + } + return true; + } + }); } // updating classToClass dependencies @@ -2224,6 +2264,7 @@ public class Mappings { myClassToSourceFile.close(); if (!myIsDelta) { + myShortClassNameIndex.close(); // only close if you own the context final DependencyContext context = myContext; if (context != null) { @@ -2247,6 +2288,7 @@ public class Mappings { myClassToSourceFile.flush(memoryCachesOnly); if (!myIsDelta) { + myShortClassNameIndex.flush(memoryCachesOnly); // flush if you own the context final DependencyContext context = myContext; if (context != null) { @@ -2312,6 +2354,14 @@ public class Mappings { addChangedClass(cr.name); } + private void addAddedClass(final ClassRepr cr) { + assert (myAddedClasses != null); + + myAddedClasses.add(cr); + + addChangedClass(cr.name); + } + private void addChangedClass(final int it) { assert (myChangedClasses != null && myChangedFiles != null); myChangedClasses.add(it); @@ -2328,6 +2378,11 @@ public class Mappings { return myDeletedClasses == null ? Collections.emptySet() : Collections.unmodifiableSet(myDeletedClasses); } + @NotNull + private Set getAddedClasses() { + return myAddedClasses == null ? Collections.emptySet() : Collections.unmodifiableSet(myAddedClasses); + } + private TIntHashSet getChangedClasses() { return myChangedClasses; } @@ -2390,6 +2445,7 @@ public class Mappings { myClassToClassDependency, mySourceFileToClasses, myClassToSourceFile, + myShortClassNameIndex }; final String[] info = { @@ -2397,6 +2453,7 @@ public class Mappings { "ClassToClassDependency", "SourceFileToClasses", "ClassToSourceFile", + "ShortClassNameIndex" }; for (int i = 0; i < data.length; i++) { diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java index 1a0ce3bdc1d6..791e2e291f73 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java @@ -41,7 +41,7 @@ import java.util.concurrent.ConcurrentMap; * Date: 10/7/11 */ public class BuildDataManager implements StorageOwner { - private static final int VERSION = 20; + private static final int VERSION = 21; private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.incremental.storage.BuildDataManager"); private static final String SRC_TO_FORM_STORAGE = "src-form"; private static final String MAPPINGS_STORAGE = "mappings"; diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/CommonTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/CommonTest.java index 8f97b867cdbd..7adfbea6124f 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/CommonTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/CommonTest.java @@ -113,4 +113,9 @@ public class CommonTest extends IncrementalTestCase { public void testAddDuplicateClass() throws Exception { doTest(); } + + public void testAddClassHidingImportedClass() throws Exception { + doTest(); + } + } From d06f31a43155cfcce55a6b773df2d1225be97e28 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 25 Nov 2013 21:59:30 +0400 Subject: [PATCH 5/7] IDEA-116921 Run configuration can't resolve test dependency when "Resolve workspace artifacts" ticked on. --- .../idea/maven/artifactResolver/common/MavenModuleMap.java | 4 ++++ .../idea/maven/artifactResolver/MyWorkspaceReader.java | 7 ++++++- .../maven/artifactResolver/IntelliJWorkspaceReaderM31.java | 7 ++++++- .../idea/maven/execution/MavenExternalParameters.java | 6 ++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/plugins/maven/artifact-resolver-m2/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java b/plugins/maven/artifact-resolver-m2/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java index f9246328b8c1..bf3fff93b063 100644 --- a/plugins/maven/artifact-resolver-m2/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java +++ b/plugins/maven/artifact-resolver-m2/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java @@ -56,6 +56,10 @@ public class MavenModuleMap { public boolean resolveToModule(Artifact artifact) { String extension = artifact.getArtifactHandler().getExtension(); + if ("jar".equals(extension) && "test-jar".equals(artifact.getType())) { + extension = "test-jar"; + } + File file = findArtifact(artifact.getGroupId(), artifact.getArtifactId(), extension, artifact.getBaseVersion()); if(file == null) { diff --git a/plugins/maven/artifact-resolver-m3/src/org/jetbrains/idea/maven/artifactResolver/MyWorkspaceReader.java b/plugins/maven/artifact-resolver-m3/src/org/jetbrains/idea/maven/artifactResolver/MyWorkspaceReader.java index d67fcc9f0a12..612d24bb8b7d 100644 --- a/plugins/maven/artifact-resolver-m3/src/org/jetbrains/idea/maven/artifactResolver/MyWorkspaceReader.java +++ b/plugins/maven/artifact-resolver-m3/src/org/jetbrains/idea/maven/artifactResolver/MyWorkspaceReader.java @@ -52,7 +52,12 @@ public class MyWorkspaceReader implements WorkspaceReader { } public File findArtifact(Artifact artifact) { - return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(), + String type = artifact.getExtension(); + if ("jar".equals(type) && "tests".equals(artifact.getClassifier())) { + type = "test-jar"; + } + + return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), type, artifact.getBaseVersion()); } diff --git a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java index 5f5386ca3a1f..3041e8350a20 100644 --- a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java +++ b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java @@ -52,7 +52,12 @@ public class IntelliJWorkspaceReaderM31 implements WorkspaceReader { } public File findArtifact(Artifact artifact) { - return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(), + String type = artifact.getExtension(); + if ("jar".equals(type) && "tests".equals(artifact.getClassifier())) { + type = "test-jar"; + } + + return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), type, artifact.getBaseVersion()); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java index d5f11ad62408..181537bd3e56 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java @@ -260,6 +260,12 @@ public class MavenExternalParameters { + ':' + mavenProject.getMavenId().getVersion(), mavenProject.getFile().getPath()); + res.setProperty(mavenProject.getMavenId().getGroupId() + + ':' + mavenProject.getMavenId().getArtifactId() + + ":test-jar" + + ':' + mavenProject.getMavenId().getVersion(), + mavenProject.getTestOutputDirectory()); + res.setProperty(mavenProject.getMavenId().getGroupId() + ':' + mavenProject.getMavenId().getArtifactId() + ':' + mavenProject.getPackaging() From 1088e3f00ed914c564b4550b70afeb4e87242d50 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 25 Nov 2013 19:06:53 +0100 Subject: [PATCH 6/7] IDEA-115862 Find in Path should default to current files's path --- .../src/com/intellij/find/impl/FindInProjectUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index 9721e1b00b36..e801649d71d3 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -23,7 +23,6 @@ import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.editor.Document; @@ -114,6 +113,13 @@ public class FindInProjectUtil { if (model.getModuleName() == null || editor == null) { model.setDirectoryName(directoryName); model.setProjectScope(directoryName == null && module == null && !model.isCustomScope() || editor != null); + + // for convenience set directory name to directory of current file, note that we doesn't change default projectScope + if (directoryName == null) { + VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext); + if (virtualFile != null && !virtualFile.isDirectory()) virtualFile = virtualFile.getParent(); + if (virtualFile != null) model.setDirectoryName(virtualFile.getParent().getPresentableUrl()); + } } } From c44098a2f3e1fe1461e996d2c2bc1d0656793134 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 25 Nov 2013 19:10:20 +0100 Subject: [PATCH 7/7] use exactly parent url --- .../lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index e801649d71d3..45622f0532c6 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -118,7 +118,7 @@ public class FindInProjectUtil { if (directoryName == null) { VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext); if (virtualFile != null && !virtualFile.isDirectory()) virtualFile = virtualFile.getParent(); - if (virtualFile != null) model.setDirectoryName(virtualFile.getParent().getPresentableUrl()); + if (virtualFile != null) model.setDirectoryName(virtualFile.getPresentableUrl()); } } }