From 75da7d56457f48d463b016edf6340f1553a2fa10 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 19 Sep 2016 18:16:15 +0200 Subject: [PATCH] exclude excluded from validation files from checking groovy resources (IDEA-159538) --- .../options/ValidationConfiguration.java | 6 ++- .../JpsJavaCompilerConfiguration.java | 3 ++ .../JpsJavaCompilerConfigurationImpl.java | 7 +++ .../java/JpsJavaModelSerializerExtension.java | 1 + ...psCompilerValidationExcludeSerializer.java | 44 +++++++++++++++++++ .../incremental/groovy/GreclipseBuilder.java | 7 ++- .../jps/incremental/groovy/GroovyBuilder.java | 1 + .../groovy/GroovyResourceChecker.java | 9 ++++ .../incremental/groovy/JpsGroovycRunner.java | 16 +++++-- .../compiler/GroovyResourceCheckerTest.groovy | 9 ++++ 10 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 jps/model-serialization/src/org/jetbrains/jps/model/serialization/java/compiler/JpsCompilerValidationExcludeSerializer.java 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() + } + }