aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-04-06 15:24:36 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-04-07 11:46:50 +0000
commit777845c31d3b7a2bf246546a6c85b543ccb4ecba (patch)
tree93bd68720bc3480d7df9d6273c32953aca782e7a /src/main/java
parent2e59ad744028349d8a0d188edf89e233ac3d9bbf (diff)
Remove SkylarkAspectClass.getDefintion.
-- MOS_MIGRATED_REVID=119162307
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java96
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java9
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());
}