Skip to content
This repository was archived by the owner on Feb 23, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/com/google/common/css/JobDescription.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class JobDescription {
public final boolean simplifyCss;
public final boolean eliminateDeadStyles;
public final boolean allowDefPropagation;
public final boolean allowDuplicateDeclarations;
public final boolean allowUnrecognizedFunctions;
public final Set<String> allowedNonStandardFunctions;
public final boolean allowUnrecognizedProperties;
Expand Down Expand Up @@ -124,6 +125,7 @@ public enum SourceMapDetailLevel { ALL, DEFAULT }
boolean useInternalBidiFlipper, boolean swapLtrRtlInUrl,
boolean swapLeftRightInUrl, boolean simplifyCss,
boolean eliminateDeadStyles, boolean allowDefPropagation,
boolean allowDuplicateDeclarations,
boolean allowUnrecognizedFunctions,
Set<String> allowedNonStandardFunctions,
boolean allowUnrecognizedProperties,
Expand Down Expand Up @@ -162,6 +164,7 @@ public enum SourceMapDetailLevel { ALL, DEFAULT }
this.simplifyCss = simplifyCss;
this.eliminateDeadStyles = eliminateDeadStyles;
this.allowDefPropagation = allowDefPropagation;
this.allowDuplicateDeclarations = allowDuplicateDeclarations;
this.allowUnrecognizedFunctions = allowUnrecognizedFunctions;
this.allowedNonStandardFunctions = ImmutableSet.copyOf(
allowedNonStandardFunctions);
Expand Down
14 changes: 13 additions & 1 deletion src/com/google/common/css/JobDescriptionBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public class JobDescriptionBuilder {
boolean simplifyCss;
boolean eliminateDeadStyles;
boolean allowDefPropagation;
boolean allowDuplicateDeclarations;
boolean allowUnrecognizedFunctions;
Set<String> allowedNonStandardFunctions;
boolean allowUnrecognizedProperties;
Expand Down Expand Up @@ -88,6 +89,7 @@ public JobDescriptionBuilder() {
this.simplifyCss = false;
this.eliminateDeadStyles = false;
this.allowDefPropagation = false;
this.allowDuplicateDeclarations = false;
this.allowUnrecognizedFunctions = false;
this.allowedNonStandardFunctions = Sets.newHashSet();
this.allowUnrecognizedProperties = false;
Expand Down Expand Up @@ -411,6 +413,16 @@ public JobDescriptionBuilder allowDefPropagation() {
return setAllowDefPropagation(true);
}

public JobDescriptionBuilder setAllowDuplicateDeclarations(boolean allow) {
checkJobIsNotAlreadyCreated();
this.allowDuplicateDeclarations = allow;
return this;
}

public JobDescriptionBuilder allowDuplicateDeclarations() {
return setAllowDuplicateDeclarations(true);
}

public JobDescriptionBuilder setAllowUndefinedConstants(boolean allow) {
checkJobIsNotAlreadyCreated();
this.allowUndefinedConstants = allow;
Expand Down Expand Up @@ -464,7 +476,7 @@ public JobDescription getJobDescription() {
copyrightNotice, outputFormat, inputOrientation, outputOrientation,
optimize, trueConditionNames, useInternalBidiFlipper, swapLtrRtlInUrl,
swapLeftRightInUrl, simplifyCss, eliminateDeadStyles,
allowDefPropagation, allowUnrecognizedFunctions, allowedNonStandardFunctions,
allowDefPropagation, allowDuplicateDeclarations, allowUnrecognizedFunctions, allowedNonStandardFunctions,
allowUnrecognizedProperties, allowedUnrecognizedProperties, allowUndefinedConstants,
allowMozDocument, vendor,
allowKeyframes, allowWebkitKeyframes, processDependencies,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,10 @@ static class Flags {
+ " from one file to propagate to other files.")
private boolean allowDefPropagation = true;

@Option(name = "--allow-duplicate-declarations", usage = "Allow duplicate"
+ " declarations without needing @alternate")
private boolean allowDuplicateDeclarations = false;

@Option(name = "--allow-unrecognized-functions", usage =
"Allow unrecognized functions.")
private boolean allowUnrecognizedFunctions = false;
Expand Down Expand Up @@ -222,6 +226,7 @@ JobDescription createJobDescription() {
builder.setCopyrightNotice(copyrightNotice);
builder.setTrueConditionNames(trueConditions);
builder.setAllowDefPropagation(allowDefPropagation);
builder.setAllowDuplicateDeclarations(allowDuplicateDeclarations);
builder.setAllowUnrecognizedFunctions(allowUnrecognizedFunctions);
builder.setAllowedNonStandardFunctions(allowedNonStandardFunctions);
builder.setAllowedUnrecognizedProperties(allowedUnrecognizedProperties);
Expand Down
8 changes: 5 additions & 3 deletions src/com/google/common/css/compiler/passes/PassRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,11 @@ public void runPasses(CssTree cssTree) {
cssTree.getMutatingVisitController()).runPass();
}
if (job.eliminateDeadStyles) {
// Report errors for duplicate declarations
new DisallowDuplicateDeclarations(
cssTree.getVisitController(), errorManager).runPass();
if (!job.allowDuplicateDeclarations) {
// Report errors for duplicate declarations
new DisallowDuplicateDeclarations(
cssTree.getVisitController(), errorManager).runPass();
}
// Split rules by selector and declaration.
new SplitRulesetNodes(cssTree.getMutatingVisitController()).runPass();
// Dead code elimination.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@ public void testAllowDefPropagationDefaultsToTrue() throws Exception {
assertTrue(jobDescription.allowDefPropagation);
}

public void testAllowDuplicateDeclarationsDefaultsToFalse() throws Exception {
ClosureCommandLineCompiler.Flags flags =
ClosureCommandLineCompiler.parseArgs(new String[] {"/dev/null"}, EXIT_CODE_HANDLER);
JobDescription jobDescription = flags.createJobDescription();
assertFalse(jobDescription.allowDuplicateDeclarations);
}


public void testEmptyImportBlocks() throws Exception {
// See b/29995881
Expand Down