diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form
index 1eaf3812dfd2..90a9f505b22f 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form
@@ -8,7 +8,7 @@
-
+
@@ -37,6 +37,14 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.java
index 54df775d2767..1af3db22ef53 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.java
@@ -43,6 +43,7 @@ public class GroovyCompilerConfigurable implements SearchableConfigurable, Compi
private JTextField myHeapSize;
private JPanel myMainPanel;
private JPanel myExcludesPanel;
+ private JCheckBox myUseGroovycStubs;
private ExcludedEntriesConfigurable myExcludes;
private final GroovyCompilerConfiguration myConfig;
@@ -100,16 +101,20 @@ public class GroovyCompilerConfigurable implements SearchableConfigurable, Compi
}
public boolean isModified() {
- return !Comparing.equal(myConfig.getHeapSize(), myHeapSize.getText()) || myExcludes.isModified();
+ return !Comparing.equal(myConfig.getHeapSize(), myHeapSize.getText()) ||
+ myExcludes.isModified() ||
+ myConfig.isUseGroovycStubs() != myUseGroovycStubs.isSelected();
}
public void apply() throws ConfigurationException {
myExcludes.apply();
myConfig.setHeapSize(myHeapSize.getText());
+ myConfig.setUseGroovycStubs(myUseGroovycStubs.isSelected());
}
public void reset() {
myHeapSize.setText(myConfig.getHeapSize());
+ myUseGroovycStubs.setSelected(myConfig.isUseGroovycStubs());
myExcludes.reset();
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java
index 41b602735a4b..dfc2534355c8 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java
@@ -36,11 +36,13 @@ import org.jdom.Element;
)
public class GroovyCompilerConfiguration implements PersistentStateComponent, Disposable {
private String myHeapSize = "400";
+ private boolean myUseGroovycStubs = false;
private final ExcludedEntriesConfiguration myExcludeFromStubGeneration = new ExcludedEntriesConfiguration();
public MyStateBean getState() {
final MyStateBean bean = new MyStateBean();
bean.heapSize = myHeapSize;
+ bean.useGroovycStubs = myUseGroovycStubs;
myExcludeFromStubGeneration.writeExternal(bean.excludes);
return bean;
}
@@ -55,11 +57,7 @@ public class GroovyCompilerConfiguration implements PersistentStateComponent(Arrays.asList(GroovyFileType.GROOVY_FILE_TYPE, StdFileTypes.JAVA)),
- new HashSet(Arrays.asList(StdFileTypes.JAVA)));
- } else {
- GroovyToJavaGenerator generator = new GroovyToJavaGenerator(myProject);
- compilerManager.addCompiler(generator);
- compilerManager.addCompilationStatusListener(generator);
- }
+ compilerManager.addTranslatingCompiler(new GroovycStubGenerator(myProject),
+ new HashSet(Arrays.asList(GroovyFileType.GROOVY_FILE_TYPE, StdFileTypes.JAVA)),
+ new HashSet(Arrays.asList(StdFileTypes.JAVA)));
+
+ GroovyToJavaGenerator generator = new GroovyToJavaGenerator(myProject);
+ compilerManager.addCompiler(generator);
+ compilerManager.addCompilationStatusListener(generator);
compilerManager.addTranslatingCompiler(new GroovyCompiler(myProject),
new HashSet(Arrays.asList(GroovyFileType.GROOVY_FILE_TYPE, StdFileTypes.CLASS)),
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovyToJavaGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovyToJavaGenerator.java
index 8241a74a4773..d30851a9e138 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovyToJavaGenerator.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovyToJavaGenerator.java
@@ -114,6 +114,10 @@ public class GroovyToJavaGenerator implements SourceGeneratingCompiler, Compilat
}
public GenerationItem[] getGenerationItems(CompileContext context) {
+ if (GroovyCompilerConfiguration.getInstance(myProject).isUseGroovycStubs()) {
+ return new GenerationItem[0];
+ }
+
myContext = context;
List generationItems = new ArrayList();
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovycStubGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovycStubGenerator.java
index a02a2b9ec3b6..235964624085 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovycStubGenerator.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/generator/GroovycStubGenerator.java
@@ -24,9 +24,9 @@ import com.intellij.openapi.compiler.CompileScope;
import com.intellij.openapi.compiler.CompilerPaths;
import com.intellij.openapi.compiler.ex.CompileContextEx;
import com.intellij.openapi.compiler.options.ExcludedEntriesConfiguration;
-import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
@@ -47,7 +47,6 @@ import java.util.List;
* @author peter
*/
public class GroovycStubGenerator extends GroovyCompilerBase {
- private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.groovy.compiler.generator.GroovycStubGenerator");
public GroovycStubGenerator(Project project) {
super(project);
@@ -55,8 +54,26 @@ public class GroovycStubGenerator extends GroovyCompilerBase {
@Override
public void compile(CompileContext compileContext, Chunk moduleChunk, VirtualFile[] virtualFiles, OutputSink sink) {
+ if (!GroovyCompilerConfiguration.getInstance(myProject).isUseGroovycStubs()) {
+ return;
+ }
+
final CompileScope scope = compileContext.getCompileScope();
- if (scope.getFiles(StdFileTypes.JAVA, true).length == 0) {
+ final VirtualFile[] javaFiles = scope.getFiles(StdFileTypes.JAVA, true);
+ if (javaFiles.length == 0) {
+ return;
+ }
+
+ boolean hasJava = false;
+ for (VirtualFile javaFile : javaFiles) {
+ final Module module = ModuleUtil.findModuleForFile(javaFile, myProject);
+ if (module != null && moduleChunk.containsNode(module)) {
+ hasJava = true;
+ break;
+ }
+ }
+
+ if (!hasJava) {
return;
}
@@ -103,7 +120,6 @@ public class GroovycStubGenerator extends GroovyCompilerBase {
if (!hasJava) {
//always pass groovyc stub generator at least 1 java file, or it won't generate stubs
- //todo not needed anymore with groovy 1.7?
toCompile.add(createMockJavaFile(rootPath));
}