Revision: 10667
Author: unn...@google.com
Date: Thu Sep 22 13:53:31 2011
Log: Allow @defs with multiple values
Review at http://gwt-code-reviews.appspot.com/1557803
Review by: rj...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=10667
Modified:
/trunk/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
/trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
/trunk/user/test/com/google/gwt/resources/client/deftest.css
=======================================
--- /trunk/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
Wed Jun 8 16:12:42 2011
+++ /trunk/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
Thu Sep 22 13:53:31 2011
@@ -70,6 +70,7 @@
import com.google.gwt.resources.ext.ResourceContext;
import com.google.gwt.resources.ext.ResourceGeneratorUtil;
import com.google.gwt.resources.ext.SupportsGeneratorResultCaching;
+import com.google.gwt.thirdparty.guava.common.base.Joiner;
import com.google.gwt.user.rebind.SourceWriter;
import com.google.gwt.user.rebind.StringSourceWriter;
@@ -895,6 +896,11 @@
computeObfuscatedNames(logger, classPrefix, reservedPrefixes,
operableTypes);
}
+
+ private boolean isReturnTypeString(JClassType classReturnType) {
+ return (classReturnType != null
+ &&
String.class.getName().equals(classReturnType.getQualifiedSourceName()));
+ }
/**
* Check for the presence of the NotStrict annotation on the method.
This will
@@ -1079,21 +1085,21 @@
throw new UnableToCompleteException();
}
- // TODO: Allow returning an array of values
- if (def.getValues().size() != 1) {
+ JClassType classReturnType = toImplement.getReturnType().isClass();
+
+ if (def.getValues().size() != 1
&& !isReturnTypeString(classReturnType)) {
logger.log(TreeLogger.ERROR, "@def rule " + name
- + " must define exactly one value");
+ + " must define exactly one value or return type must be
String");
throw new UnableToCompleteException();
}
-
- NumberValue numberValue = def.getValues().get(0).isNumberValue();
String returnExpr = "";
- JClassType classReturnType = toImplement.getReturnType().isClass();
- if (classReturnType != null
-
&& "java.lang.String".equals(classReturnType.getQualifiedSourceName())) {
- returnExpr = "\"" +
Generator.escape(def.getValues().get(0).toString())
- + "\"";
+ if (isReturnTypeString(classReturnType)) {
+ List<String> returnValues = new ArrayList<String>();
+ for (Value val : def.getValues()) {
+ returnValues.add(Generator.escape(val.toString()));
+ }
+ returnExpr = "\"" + Joiner.on(" ").join(returnValues) + "\"";
} else {
JPrimitiveType returnType =
toImplement.getReturnType().isPrimitive();
if (returnType == null) {
@@ -1102,6 +1108,7 @@
+ "@def accessors");
throw new UnableToCompleteException();
}
+ NumberValue numberValue = def.getValues().get(0).isNumberValue();
if (returnType == JPrimitiveType.INT || returnType ==
JPrimitiveType.LONG) {
returnExpr = "" + Math.round(numberValue.getValue());
} else if (returnType == JPrimitiveType.FLOAT) {
=======================================
--- /trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
Thu May 5 08:11:08 2011
+++ /trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
Thu Sep 22 13:53:31 2011
@@ -60,6 +60,8 @@
float rawFloat();
int rawInt();
+
+ String multiValueBorderDef();
}
/**
@@ -362,6 +364,8 @@
assertNotNull(defines.overrideIntClass());
assertFalse("10px".equals(defines.overrideIntClass()));
assertFalse("10".equals(defines.overrideIntClass()));
+
+ assertEquals("1px solid rgba(0,0,0,0.2)",
defines.multiValueBorderDef());
}
public void testEnsureInjected() {
=======================================
--- /trunk/user/test/com/google/gwt/resources/client/deftest.css Fri Jul 3
08:33:45 2009
+++ /trunk/user/test/com/google/gwt/resources/client/deftest.css Thu Sep 22
13:53:31 2011
@@ -27,6 +27,8 @@
@def lengthString 100px;
@def colorString #f00;
+ @def multiValueBorderDef 1px solid rgba(0,0,0,0.2);
+
/* Uncomment this, and you should get an error about a @def shadowing a
name */
/*
.colorString {
@@ -41,5 +43,3 @@
.overrideInt {
width: 10px;
}
-
-
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors