diff --git a/java/compiler/impl/src/com/intellij/compiler/options/ValidationConfiguration.java b/java/compiler/impl/src/com/intellij/compiler/options/ValidationConfiguration.java index bb76ac9759f5..44f936b2faa7 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/ValidationConfiguration.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/ValidationConfiguration.java @@ -25,6 +25,7 @@ import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.project.Project; import com.intellij.util.xmlb.XmlSerializerUtil; +import org.jetbrains.jps.model.serialization.java.compiler.JpsCompilerValidationExcludeSerializer; import java.util.HashMap; import java.util.Map; @@ -76,6 +77,9 @@ public class ValidationConfiguration implements PersistentStateComponent myNotNullAnnotations = Collections.singletonList(NotNull.class.getName()); private boolean myClearOutputDirectoryOnRebuild = true; private final JpsCompilerExcludes myCompilerExcludes = new JpsCompilerExcludesImpl(); + private final JpsCompilerExcludes myValidationExcludes = new JpsCompilerExcludesImpl(); private final List myResourcePatterns = new ArrayList(); private final List myAnnotationProcessingProfiles = new ArrayList(); private final ProcessorConfigProfileImpl myDefaultAnnotationProcessingProfile = new ProcessorConfigProfileImpl("Default"); @@ -97,6 +98,12 @@ public class JpsJavaCompilerConfigurationImpl extends JpsCompositeElementBase toCompile = new ArrayList(); dirtyFilesHolder.processDirtyFiles(new FileProcessor() { public boolean apply(T target, File file, R sourceRoot) throws IOException { - final String path = file.getPath(); - //todo file type check - if ((GroovyBuilder.isGroovyFile(path) || forEclipse && path.endsWith(".java")) && - !configuration.isResourceFile(file, sourceRoot.getRootFile())) { + if (shouldProcessSourceFile(file, sourceRoot, file.getPath(), configuration)) { if (forStubs && settings.isExcludedFromStubGeneration(file)) { hasExcludes.set(true); return true; @@ -335,6 +332,17 @@ public abstract class JpsGroovycRunner toCompile, MultiMap successfullyCompiled, diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyResourceCheckerTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyResourceCheckerTest.groovy index c489e07678f3..f93bb6152008 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyResourceCheckerTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyResourceCheckerTest.groovy @@ -15,7 +15,9 @@ */ package org.jetbrains.plugins.groovy.compiler +import com.intellij.compiler.options.ValidationConfiguration import com.intellij.openapi.compiler.CompilerMessage +import com.intellij.openapi.compiler.options.ExcludeEntryDescription import com.intellij.openapi.module.Module import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ModuleRootModificationUtil @@ -68,4 +70,11 @@ class GroovyResourceCheckerTest extends GroovyCompilerTestCase { assertEmpty checkResources() } + void "test exclude from validation"() { + checkResources() + def file = myFixture.addFileToProject('res/a.groovy', 'class Foo extends Bar {}') + ValidationConfiguration.getExcludedEntriesConfiguration(project).addExcludeEntryDescription(new ExcludeEntryDescription(file.virtualFile, false, true, project)) + assertEmpty checkResources() + } + }