Add isSkylark to RuleClass -- MOS_MIGRATED_REVID=106588003
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index 6429203..7846250 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -563,9 +563,9 @@ Preconditions.checkState(skylarkExecutable == (ruleDefinitionEnvironment != null)); Preconditions.checkState(workspaceOnly || externalBindingsFunction == NO_EXTERNAL_BINDINGS); - return new RuleClass(name, skylarkExecutable, documented, publicByDefault, binaryOutput, - workspaceOnly, outputsDefaultExecutable, implicitOutputsFunction, configurator, - configuredTargetFactory, validityPredicate, preferredDependencyPredicate, + return new RuleClass(name, skylark, skylarkExecutable, documented, publicByDefault, + binaryOutput, workspaceOnly, outputsDefaultExecutable, implicitOutputsFunction, + configurator, configuredTargetFactory, validityPredicate, preferredDependencyPredicate, ImmutableSet.copyOf(advertisedProviders), configuredTargetFunction, externalBindingsFunction, ruleDefinitionEnvironment, configurationFragmentPolicy.build(), supportsConstraintChecking, attributes.values().toArray(new Attribute[0])); @@ -883,6 +883,7 @@ */ private final String targetKind; + private final boolean isSkylark; private final boolean skylarkExecutable; private final boolean documented; private final boolean publicByDefault; @@ -963,7 +964,7 @@ private final boolean supportsConstraintChecking; /** - * Helper constructor that skips allowedConfigurationFragmentNames and fragmentNameResolver + * Helper constructor that skips allowedConfigurationFragmentNames and fragmentNameResolver. */ @VisibleForTesting RuleClass(String name, @@ -987,6 +988,7 @@ boolean supportsConstraintChecking, Attribute... attributes) { this(name, + /*isSkylark=*/ skylarkExecutable, skylarkExecutable, documented, publicByDefault, @@ -1034,7 +1036,7 @@ */ @VisibleForTesting RuleClass(String name, - boolean skylarkExecutable, boolean documented, boolean publicByDefault, + boolean isSkylark, boolean skylarkExecutable, boolean documented, boolean publicByDefault, boolean binaryOutput, boolean workspaceOnly, boolean outputsDefaultExecutable, ImplicitOutputsFunction implicitOutputsFunction, Configurator<?, ?> configurator, @@ -1048,6 +1050,7 @@ boolean supportsConstraintChecking, Attribute... attributes) { this.name = name; + this.isSkylark = isSkylark; this.targetKind = name + " rule"; this.skylarkExecutable = skylarkExecutable; this.documented = documented; @@ -1613,6 +1616,11 @@ return ruleDefinitionEnvironment; } + /** Returns true if this RuleClass is a skylark-defined RuleClass. */ + public boolean isSkylark() { + return isSkylark; + } + /** * Returns true if this RuleClass is an executable Skylark RuleClass (i.e. it is * Skylark and Normal or Test RuleClass).
diff --git a/src/main/protobuf/build.proto b/src/main/protobuf/build.proto index 6a29983..a3f4c19 100644 --- a/src/main/protobuf/build.proto +++ b/src/main/protobuf/build.proto
@@ -239,6 +239,9 @@ // The rule's class's public by default value. optional bool public_by_default = 9; + + // If this rule is of a skylark-defined RuleClass. + optional bool is_skylark = 10; } // Summary of all transitive dependencies of 'rule,' where each dependent