diff options
author | 2016-04-06 15:24:36 +0000 | |
---|---|---|
committer | 2016-04-07 11:46:50 +0000 | |
commit | 777845c31d3b7a2bf246546a6c85b543ccb4ecba (patch) | |
tree | 93bd68720bc3480d7df9d6273c32953aca782e7a /src/main/java | |
parent | 2e59ad744028349d8a0d188edf89e233ac3d9bbf (diff) |
Remove SkylarkAspectClass.getDefintion.
--
MOS_MIGRATED_REVID=119162307
Diffstat (limited to 'src/main/java')
5 files changed, 44 insertions, 103 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index bf4a0a744e..f865e99799 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -86,15 +86,18 @@ public final class Attribute implements Comparable<Attribute> { } private static class SkylarkRuleAspect extends RuleAspect<SkylarkAspectClass> { - public SkylarkRuleAspect(SkylarkAspectClass aspectClass) { + private final AspectDefinition definition; + + public SkylarkRuleAspect(SkylarkAspectClass aspectClass, AspectDefinition definition) { super(aspectClass, NO_PARAMETERS); + this.definition = definition; } @Override public Aspect getAspect(Rule rule) { return Aspect.forSkylark( aspectClass, - aspectClass.getDefinition(), + definition, parametersExtractor.apply(rule)); } } @@ -795,8 +798,8 @@ public final class Attribute implements Comparable<Attribute> { return this.aspect(aspect, noParameters); } - public Builder<TYPE> aspect(SkylarkAspectClass aspectClass) { - this.aspects.add(new SkylarkRuleAspect(aspectClass)); + public Builder<TYPE> aspect(SkylarkAspectClass aspectClass, AspectDefinition definition) { + this.aspects.add(new SkylarkRuleAspect(aspectClass, definition)); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java index 935cb8f002..340daa264d 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java @@ -15,17 +15,31 @@ package com.google.devtools.build.lib.packages; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import java.util.Objects; /** * {@link AspectClass} for aspects defined in Skylark. */ -public abstract class SkylarkAspectClass implements AspectClass { +@Immutable +public final class SkylarkAspectClass implements AspectClass { + private final Label extensionLabel; + private final String exportedName; - public abstract Label getExtensionLabel(); + public SkylarkAspectClass(Label extensionLabel, String exportedName) { + this.extensionLabel = extensionLabel; + this.exportedName = exportedName; + } + + public Label getExtensionLabel() { + return extensionLabel; + } + + public String getExportedName() { + return exportedName; + } - public abstract String getExportedName(); @Override public final String getName() { @@ -44,15 +58,12 @@ public abstract class SkylarkAspectClass implements AspectClass { SkylarkAspectClass that = (SkylarkAspectClass) o; - return getExtensionLabel().equals(that.getExtensionLabel()) - && getExportedName().equals(that.getExportedName()); + return extensionLabel.equals(that.extensionLabel) + && exportedName.equals(that.exportedName); } @Override public final int hashCode() { return Objects.hash(getExtensionLabel(), getExportedName()); } - - @Deprecated - public abstract AspectDefinition getDefinition(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java index 4876b6a981..80dcba4c87 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java @@ -46,7 +46,6 @@ import com.google.devtools.build.lib.cmdline.LabelValidator; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.Attribute; @@ -555,7 +554,7 @@ public class SkylarkRuleClassFunctions { throw new EvalException(definitionLocation, "All aspects applied to rule dependencies must be top-level values"); } - attributeBuilder.aspect(skylarkAspect.getAspectClass()); + attributeBuilder.aspect(skylarkAspect.getAspectClass(), skylarkAspect.getDefinition()); } addAttribute(definitionLocation, builder, @@ -860,7 +859,7 @@ public class SkylarkRuleClassFunctions { private final ImmutableSet<String> fragments; private final ImmutableSet<String> hostFragments; private final Environment funcallEnv; - private Exported exported; + private SkylarkAspectClass aspectClass; public SkylarkAspect( BaseFunction implementation, @@ -893,20 +892,6 @@ public class SkylarkRuleClassFunctions { return attributes; } - /** - * Gets the set of configuration fragment names needed in the target configuration. - */ - public ImmutableSet<String> getFragments() { - return fragments; - } - - /** - * Gets the set of configuration fragment names needed in the host configuration. - */ - public ImmutableSet<String> getHostFragments() { - return hostFragments; - } - @Override public boolean isImmutable() { return implementation.isImmutable(); @@ -924,86 +909,29 @@ public class SkylarkRuleClassFunctions { public SkylarkAspectClass getAspectClass() { Preconditions.checkState(isExported()); - return new SkylarkAspectClassImpl(this); + return aspectClass; } void export(Label extensionLabel, String name) { - this.exported = new Exported(extensionLabel, name); + Preconditions.checkArgument(!isExported()); + this.aspectClass = new SkylarkAspectClass(extensionLabel, name); } public boolean isExported() { - return exported != null; - } - - private Label getExtensionLabel() { - Preconditions.checkArgument(isExported()); - return exported.extensionLabel; - } - - private String getExportedName() { - Preconditions.checkArgument(isExported()); - return exported.name; - } - - @Immutable - private static class Exported { - private final Label extensionLabel; - private final String name; - - public Exported(Label extensionLabel, String name) { - this.extensionLabel = extensionLabel; - this.name = name; - } - - @Override - public String toString() { - return extensionLabel.toString() + "%" + name; - } + return aspectClass != null; } - } - - /** - * Implementation of an aspect class defined in Skylark. - */ - @Immutable - private static final class SkylarkAspectClassImpl extends SkylarkAspectClass { - private final AspectDefinition aspectDefinition; - private final Label extensionLabel; - private final String exportedName; - - public SkylarkAspectClassImpl(SkylarkAspect skylarkAspect) { - Preconditions.checkArgument(skylarkAspect.isExported(), "Skylark aspects must be exported"); - this.extensionLabel = skylarkAspect.getExtensionLabel(); - this.exportedName = skylarkAspect.getExportedName(); + public AspectDefinition getDefinition() { AspectDefinition.Builder builder = new AspectDefinition.Builder(getName()); - for (String attributeAspect : skylarkAspect.getAttributeAspects()) { - builder.attributeAspect(attributeAspect, this); + for (String attributeAspect : attributeAspects) { + builder.attributeAspect(attributeAspect, aspectClass); } - ImmutableList<Pair<String, Descriptor>> attributes = skylarkAspect.getAttributes(); for (Pair<String, Descriptor> attribute : attributes) { builder.add(attribute.second.getAttributeBuilder().build(attribute.first)); } - builder.requiresConfigurationFragmentsBySkylarkModuleName(skylarkAspect.getFragments()); - builder.requiresHostConfigurationFragmentsBySkylarkModuleName( - skylarkAspect.getHostFragments()); - this.aspectDefinition = builder.build(); - } - - @Override - public AspectDefinition getDefinition() { - return aspectDefinition; - } - - @Override - public Label getExtensionLabel() { - return extensionLabel; + builder.requiresConfigurationFragmentsBySkylarkModuleName(fragments); + builder.requiresHostConfigurationFragmentsBySkylarkModuleName(hostFragments); + return builder.build(); } - - @Override - public String getExportedName() { - return exportedName; - } - } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java index aa171b2732..d3254459bf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java @@ -140,10 +140,10 @@ public final class AspectFunction implements SkyFunction { return null; } - aspectFactory = new SkylarkAspectFactory(skylarkAspect.getName(), skylarkAspect); + aspectFactory = new SkylarkAspectFactory(skylarkAspect); aspect = Aspect.forSkylark( skylarkAspect.getAspectClass(), - skylarkAspect.getAspectClass().getDefinition(), + skylarkAspect.getDefinition(), key.getParameters()); } else { throw new IllegalStateException(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java index ee77e007e8..5500bc8b99 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java @@ -41,11 +41,9 @@ import java.util.Map; */ public class SkylarkAspectFactory implements ConfiguredAspectFactory { - private final String name; private final SkylarkAspect skylarkAspect; - public SkylarkAspectFactory(String name, SkylarkAspect skylarkAspect) { - this.name = name; + public SkylarkAspectFactory(SkylarkAspect skylarkAspect) { this.skylarkAspect = skylarkAspect; } @@ -86,7 +84,8 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory { return null; } - ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder(name, ruleContext); + ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder( + skylarkAspect.getName(), ruleContext); SkylarkClassObject struct = (SkylarkClassObject) aspectSkylarkObject; Location loc = struct.getCreationLoc(); @@ -126,7 +125,7 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory { if (e instanceof EvalExceptionWithStackTrace) { ((EvalExceptionWithStackTrace) e) .registerPhantomFuncall( - String.format("%s(...)", name), + String.format("%s(...)", skylarkAspect.getName()), base.getTarget().getAssociatedRule().getLocation(), skylarkAspect.getImplementation()); } |