[gwt-contrib] Re: Add RequestFactory validator implemented as an annotation processor. (issue1467804)

2011-07-01 Thread t . broyer

I don't know why, but it outputs an error twice (this is the only
missing ProxyFor annotation I have, so I can't tell whether it's
specific to that interface or more general):
myapp-shared/src/main/java/xxx/shared/breadcrumb/BreadCrumbItemProxy.java:14:
A proxy must be annotated with ProxyFor, ProxyForName, or JsonRpcProxy
public interface BreadCrumbItemProxyT extends EnumT  FieldEnumT
extends BaseEmbeddedValueProxy {
   ^
myapp-shared/src/main/java/xxx/shared/breadcrumb/BreadCrumbItemProxy.java:14:
A proxy must be annotated with ProxyFor, ProxyForName, or JsonRpcProxy
public interface BreadCrumbItemProxyT extends EnumT  FieldEnumT
extends BaseEmbeddedValueProxy {
   ^

BTW, this is a case I could push the extends down to subinterfaces
(having 4 proxies implementing the same mixin, rather than 4
interfaces extending the same proxy bae interface)

===

Another error should IMO be a warning:
myapp-shared/src/main/java/xxx/shared/LockInfoProxy.java:10: Could not
find domain method similar to xxx.AbstractLockableEntity
findAbstractLockableEntity(java.lang.String)
public interface LockInfoProxy extends EntityProxy, LockInfo {
   ^

This is expected, we only send LockInfoProxy down from the server to the
client, so we don't need the findXxx. In comparison, the lack of a
zero-arg constructor is only a warning:
myapp-shared/src/main/java/xxx/shared/breadcrumb/DossierBreadCrumbItemProxy.java:13:
warning: The domain type xxx.model.breadcrumb.DossierBreadCrumbItem has
no default constructor. Calling
RequestContext.create(DossierBreadCrumbItemProxy.class) will cause a
server error

It would be easy to workaround (use a Locator or put a dummy findXxx
method in the domain class) but still, I think it's a bug to flag this
as an error (it's admittedly a strong warning, as you could very
easily fall in the trap, much more than a missing zero-arg constructor,
but I don't think it's an error that should break the build).



Finally, I have a small issue with generics, but I believe it's my
fault: a ListSubFooProxy getItems() in the proxy interface, but a
List? extends BaseFooProxy getItems() in the domain class, and
RfValidator generates an error that it cannot find the domain method.


http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
File
user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
(right):

http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java#newcode340
user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java:340:
state.warn(warnTo, Cannot validate method (%s.%s) because the domain
mapping for the
On 2011/06/30 15:16:48, bobv wrote:

This is more verbose, but it will unambiguously identify the unchecked

method in

question.


This doesn't print what one would expect:

myapp-shared/src/main/java/xxx/shared/BaseEmbeddedProxy.java:16:
warning: Cannot validate method
(xxx.shared.xxx.xxx.XxxProxy.()com.atolcd.gertrude.production.shared.EmbeddedProxyId)
because the domain mapping for the return type
(xxx.shared.EmbeddedProxyId) could not be resolved to a domain type

Add @SuppressWarnings(requestfactory) to dismiss.
  EmbeddedProxyId getId();
  ^
There's no mention of 'getId' in the message.

Note that I changed the way I launch the apt (calling 'javac -proc:only'
from the command line, rather tha using a Maven plugin) and the output
is different, and actually references the exact location of the warning;
so in the end, I don't think this change is necessary (sorry)

It appears I wasn't clear on my previous report though, and this
output format makes it even clearer: this warning is output once for
each interface extending BaseEmbeddedProxy, each time for the exact same
location (notice the beginning of the line, it points to
BaseEmbeddedProxy.java:16, where the getId method is defined).
Further more, the EmbeddedProxyId cannot be resolved because of this
earlier warning:

myapp-shared/src/main/java/xxx/shared/EmbeddedProxyId.java:12: warning:
Cannot fully validate proxy since type xxx.server.EmbeddedId is not
available

Add @SuppressWarnings(requestfactory) to dismiss.
public interface EmbeddedProxyId extends ValueProxy {
   ^
because the xxx.server.EmbeddedId is in the myapp-server project, which
depends on myapp-shared and therefore is not available at the time we
compile myapp-shared.
I don't mind having the warning on the getId method because of a
previous warning on EmbeddedProxyId, but there should IMO be only one,
not hundreds of them! (I actually have 52 such warnings exactly)

http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java
File
user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java
(right):


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread t . broyer

Was curious to see what it'd look like; finally have a few comments.


http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java
File user/src/com/google/gwt/uibinder/client/UiRenderer.java (right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java#newcode32
user/src/com/google/gwt/uibinder/client/UiRenderer.java:32: * @param
cell {@link com.google.gwt.cell.client.Cell Cell} that will receive the
event
Why isn't T declared as T extends Cell? then?

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
File user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1229
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1229: return
firstLetter.toLowerCase() + name.substring(4);
Beware of the turkish locale!

You should use Introspector.decapitalize here
http://download.oracle.com/javase/6/docs/api/java/beans/Introspector.html#decapitalize(java.lang.String)
Or use Character.toLowerCase rather than String.toLowerCase.

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread t . broyer

Was curious to see what it'd look like; finally have a few comments.

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)

2011-07-01 Thread jbrosenberg

LGTM (w/minor cleanup + a suggestion)
I like the management of class literal rescues much better now!


http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
File dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
(right):

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode93
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:93:
whitespace

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode600
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:600:
instantiatedTypes.add(type);
Suggest combining all this into 1 method call to something like
(maybeRescueClassLiteral(type)), and then mRCL contains logic to see
if classLiteralsToBeRescuedIfGetClassLive is null or not, to decide
whether to rescue or mark for rescue.

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode763
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:763:
suggest (see above) changing this to maybeRescueClassLiteral(type), and
have it check whether classLiteralsToBeRescuedIfGetClassLive is null or
not.  This way, the logic to decide whether to rescue immediately or
deferred is separated from the logic for whether getClass is live, etc.

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode769
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:769:
if (classLiteralsToBeRescuedIfGetClassIsLive != null) {
is re-entrant the right term (I usually think of it wrt to concurrency)?

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode870
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:870:
whitespace

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode917
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:917:
/**
C

http://gwt-code-reviews.appspot.com/1447821/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread rchandia

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread rchandia

Thanks Thomas!.


http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java
File user/src/com/google/gwt/uibinder/client/UiRenderer.java (right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java#newcode32
user/src/com/google/gwt/uibinder/client/UiRenderer.java:32: * @param
cell {@link com.google.gwt.cell.client.Cell Cell} that will receive the
event
On 2011/07/01 10:18:30, tbroyer wrote:

Why isn't T declared as T extends Cell? then?


In the end we figured it would be good to let people render for purposes
other than Cell widgets. The documentation (mistakenly) still gives the
impression that this is exclusively Cell related, though.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
File user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1229
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1229: return
firstLetter.toLowerCase() + name.substring(4);
On 2011/07/01 10:18:30, tbroyer wrote:

Beware of the turkish locale!



You should use Introspector.decapitalize here


http://download.oracle.com/javase/6/docs/api/java/beans/Introspector.html#decapitalize%28java.lang.String)

Or use Character.toLowerCase rather than String.toLowerCase.


Thanks! I was not aware of this.

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread jlabanca


http://gwt-code-reviews.appspot.com/1466809/diff/1/tools/api-checker/config/gwt23_24userApi.conf
File tools/api-checker/config/gwt23_24userApi.conf (right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/tools/api-checker/config/gwt23_24userApi.conf#newcode58
tools/api-checker/config/gwt23_24userApi.conf:58:
:user/src/com/google/gwt/uibinder/client/UiRendererUtils.java\
This doesn't match the other lines. It shouldn't be necessary to exclude
new classes from the excludedFiles_old list.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java
File user/src/com/google/gwt/uibinder/client/UiRendererUtils.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode25
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:25: public
class UiRendererUtils {
If this is an impl class, you should make it package protected or at
least append Impl to the class name so nobody uses it.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode47
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:47: return
null;
Should this throw an IllegalArgumentException?  If root is null, it
indicates that an invalid parent was passed into the method.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode55
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:55: Element
elementById = Document.get().getElementById(renderedId);
You can move the assertion below this line, and only run it if
elementById is null.  That way, you can throw a Runtime exception in
prod mode, but you only walk up the DOM in the error case.

if (elementById == null) {
  if (!isAttachedToDom(root)) {
throw new RuntimeException(UiRendered element is not attached to
DOM while getting \ + fieldName + \);
  } else {
throw new IllegalArgumentException(fieldName not found within
rendered element);
  }
}

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode88
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:88: :
Parent Element of previously rendered element contains more than one
child;
This assertion should only be executed if ret is the first child of the
parent.  If the parent itself is the rendered Element, you don't need
the check.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode117
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:117: public
static SafeHtml stampUiRendererAttribute(SafeHtml safeHtml, String
attributeName,
Can you JavaDoc explaining what this is doing and what it returns.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode120
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:120: int
endOfFirstTag = html.indexOf('');
What if the SafeHtml does not contain any HTML, or if it is self closing
(ends in /):
div id=placeholder /

If UiBinder controls the inputs and can guarantee this doesn't happen,
you should note that.  An assertion in dev mode would be good too.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode121
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:121: html =
html.substring(0, endOfFirstTag) +   + attributeName + =' +
attributeValue + '
We generally use double quotes instead of quotes.  I'm not sure if it
matters a lot.

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode123
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:123: return
new SafeHtmlBuilder().appendHtmlConstant(html).toSafeHtml();
This is simpler:
return SafeHtmlUtils.fromTrustedString(html);

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
File user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1732
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1732:
ListJMethod getters = findGetterNames(owner);
What happens if there are other methods in the interface that aren't
supported by UiRenderer?  Do we rely on javac to trigger a compiler
exception?

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1739
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1739: String
elementParameter = getter.getParameters()[0].getName();
We should check that there is exactly 1 parameter, and its type is
assignable from Element.

http://gwt-code-reviews.appspot.com/1466809/

--

[gwt-contrib] Re: Add RequestFactory validator implemented as an annotation processor. (issue1467804)

2011-07-01 Thread bobv

Regarding the generics issue, I agree that the checker is behaving
correctly: the ListSubFooProxy would be converted to a ListSubFoo
when being checked against the domain type.  A List? extends BaseFoo
can't be assigned to the type ListSubFoo since the list might contain
OtherFoo elements.

Since we've mainly be talking about edge-case details of the
implementation and it sounds like the checker mostly works with your
code base, I'm going to go ahead and check the code in with some
error-reporting fixes to make it less spammy when compiling with javac.
The findFoo() error is changed to a warning, although I'm thinking that
it might be better for the novice user if it's an error.  For the
advanced user, an annotation processor option could be used to switch
that from an error to a warning.

I'll be on vacation the early part of next week and will be studiously
avoiding the computer.  Thanks for your feedback, it's been very
helpful.


http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
File
user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
(right):

http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java#newcode340
user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java:340:
state.warn(warnTo, Cannot validate method (%s.%s) because the domain
mapping for the
On 2011/07/01 09:19:16, tbroyer wrote:

On 2011/06/30 15:16:48, bobv wrote:
 This is more verbose, but it will unambiguously identify the

unchecked method

in
 question.



This doesn't print what one would expect:


Another place where Eclipse and javac differ :-)



I don't mind having the warning on the getId method because of a

previous

warning on EmbeddedProxyId, but there should IMO be only one, not

hundreds of

them! (I actually have 52 such warnings exactly)


The duplicate messages are due to the way client interfaces are checked.
 Each proxy or context type is examined individually as a flattened list
of all methods exposed by that type.  If proxyA and proxyB both inherit
some interface X, the methods in X will be checked multiple times.
Admittedly this is more work than strictly necessary, but de-duplicating
the effort would complicate the checker code.  Instead I've added some
code to the State object to prevent duplicate messages from being
emitted.

http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java
File
user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java
(right):

http://gwt-code-reviews.appspot.com/1467804/diff/6052/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java#newcode102
user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java:102:
return state.types.erasure(t).accept(this, state);
On 2011/07/01 09:19:16, tbroyer wrote:

Have you tried with an intersection type? i.e. something like T

extends

MyInterface  EntityProxy
I don't have that in my code base, and haven't tried it, but judging

from the

code of Eclipse's TypeVariableImpl#getUpperBound, it might very well

trigger the

bug too, in which case erasure() probably wouldn't be an appropriare

workaround.

I was thinking about looping on the Types#directSupertypes until one

is detected

as a transportable type:
for (TypeMirror type : state.types.directSupertypes(t)) {
if (type.accept(this, state)) {
  return true;
}
}
return false;



that should work, because the expected type of getUpperBound is a

DeclaredType,

so visitDeclared should have been called, and it only uses

isAssignable checks

(so isAssignable(MyInterfaceEntityProxy, EntityProxy) would be

equivalent to

isAssignable(MyInterface,EntityProxy)|| 
isAssignable(EntityProxy,EntityProxy).

In the case of T extends EnumT, I guess it'd work the same.


I don't think that intersection types make sense in the most-derived
RequestFactory interfaces.  Enums are the only concrete types that you
can specify in a RequestFactory interface.  The implementations of all
other return types (proxies, etc) will necessarily be implemented by the
RequestFactory generator.  The extra mix-in interfaces in the
intersection type probably won't be implemented by whatever generated,
concrete type is being returned.  The only way that would work is if the
concrete type was generated from an interface that already implemented
the mix-in.

http://gwt-code-reviews.appspot.com/1467804/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Add RequestFactory validator implemented as an annotation processor. (issue1467804)

2011-07-01 Thread Thomas Broyer
On Fri, Jul 1, 2011 at 5:52 PM,  b...@google.com wrote:
 Regarding the generics issue, I agree that the checker is behaving
 correctly: the ListSubFooProxy would be converted to a ListSubFoo
 when being checked against the domain type.  A List? extends BaseFoo
 can't be assigned to the type ListSubFoo since the list might contain
 OtherFoo elements.

 Since we've mainly be talking about edge-case details of the
 implementation and it sounds like the checker mostly works with your
 code base, I'm going to go ahead and check the code in with some
 error-reporting fixes to make it less spammy when compiling with javac.
 The findFoo() error is changed to a warning, although I'm thinking that
 it might be better for the novice user if it's an error.  For the
 advanced user, an annotation processor option could be used to switch
 that from an error to a warning.

I totally agree: go ahead, check it in!

Better than an option would be distinct @SuppressWarnings values (such
as a @SuppressWarnings(requestfactory.noFinder)), but I don't know
how they work, even less if that's possible at all.
And if you feel better with an error, no problem, I'll add a locator
with a throwing find() and create() to make sure they don't go
client-to-server. I'm so happy I could remove my horrendous hacks in
ServiceLayerDecorators once RFIV will be removed!

 I'll be on vacation the early part of next week and will be studiously
 avoiding the computer.  Thanks for your feedback, it's been very
 helpful.

You're welcome. You made (and still makes) such great work with RF and
editors (and everything else) that I had to do it in return as a thank
you.

Have great vacations!

-- 
Thomas Broyer
/tɔ.ma.bʁwa.je/

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu

Reviewers: jat, conroy,

Description:
Updating npapi plugin to remove gwtId from Jso objects (idenity fix),
adds a second map in LocalObjects.


Please review this at http://gwt-code-reviews.appspot.com/1469803/

Affected files:
  M plugins/npapi/LocalObjectTable.h
  M plugins/npapi/ScriptableInstance.cpp
  M plugins/npapi/ScriptableInstance.h
  M plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
  M user/test/com/google/gwt/core/CoreSuite.java
  A user/test/com/google/gwt/core/client/JsIdentityTest.java


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread conroy

On 2011/07/01 18:28:32, codefu wrote:

We can't rip out the ID hack quite yet-- we'd have to wait until the
fixes roll out to stable users. We need to add some version checking of
chrome to decide if it's safe to do this.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu

On 2011/07/01 18:31:43, conroy wrote:

On 2011/07/01 18:28:32, codefu wrote:



We can't rip out the ID hack quite yet-- we'd have to wait until the

fixes roll

out to stable users. We need to add some version checking of chrome to

decide if

it's safe to do this.


Is windows still on Chrome12?  Chrome13 has Kelly's identity fixes in
it.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread jat


http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h
File plugins/npapi/LocalObjectTable.h (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h#newcode100
plugins/npapi/LocalObjectTable.h:100: NPObject* get(int id) {
Given the new method added, please change this to something like
getById.

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h#newcode109
plugins/npapi/LocalObjectTable.h:109: int get(NPObject* jsObject) {
Please use a more descriptive name, such as getObjectId since there is
now collision with the above.

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp
File plugins/npapi/ScriptableInstance.cpp (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp#newcode434
plugins/npapi/ScriptableInstance.cpp:434: int id =
localObjects.get(obj);
So how does this fix the identity problem?  The reason this was added
was to avoid the identity problem, since the same JS object passed to
the plugin twice will get different NPObject wrappers.  Has that been
fixed now?

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java
File user/test/com/google/gwt/core/client/JsIdentityTest.java (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode2
user/test/com/google/gwt/core/client/JsIdentityTest.java:2: * Copyright
2008 Google Inc.
2011

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode24
user/test/com/google/gwt/core/client/JsIdentityTest.java:24: * @author
cod...@google.com (John McDole)
We don't use @author tags in GWT, and the first line should have a
period.  Did you run checkstyle or have Eclipse configured to use it?

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode34
user/test/com/google/gwt/core/client/JsIdentityTest.java:34: return
com.google.gwt.core.Core;
I'm not sure I follow what all these tests are looking for.

The most basic tests are:

testJavaToJs() { obj=...; assertTrue(jsID(obj, obj)); }
native jsID(a, b) { return a === b; }

testJsToJava() { initJsObj(); a=getJsObj(); b=getJsObj(); assertSame(a,
b); }
native initJsObj() { obj = {}; }
native getJsObj() { return obj; }

Having additional tests that store objects and return them later are
fine, but it is hard for me to tell these cases are covered from the
test and I would prefer a more direct test for them.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu


http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h
File plugins/npapi/LocalObjectTable.h (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h#newcode100
plugins/npapi/LocalObjectTable.h:100: NPObject* get(int id) {
On 2011/07/01 18:38:17, jat wrote:

Given the new method added, please change this to something like

getById.

Done.

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/LocalObjectTable.h#newcode109
plugins/npapi/LocalObjectTable.h:109: int get(NPObject* jsObject) {
On 2011/07/01 18:38:17, jat wrote:

Please use a more descriptive name, such as getObjectId since there is

now

collision with the above.


Done.

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp
File plugins/npapi/ScriptableInstance.cpp (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp#newcode434
plugins/npapi/ScriptableInstance.cpp:434: int id =
localObjects.get(obj);
On 2011/07/01 18:38:17, jat wrote:

So how does this fix the identity problem?  The reason this was added

was to

avoid the identity problem, since the same JS object passed to the

plugin twice

will get different NPObject wrappers.  Has that been fixed now?


Kelly's patch to chrome is not present in Chrome13 builds.  Running the
GWT tests shows these passing with Chrome13+NewPlugin and failing in
Chrome12+NewPlugin

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java
File user/test/com/google/gwt/core/client/JsIdentityTest.java (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode2
user/test/com/google/gwt/core/client/JsIdentityTest.java:2: * Copyright
2008 Google Inc.
On 2011/07/01 18:38:17, jat wrote:

2011


Done.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode24
user/test/com/google/gwt/core/client/JsIdentityTest.java:24: * @author
cod...@google.com (John McDole)
On 2011/07/01 18:38:17, jat wrote:

We don't use @author tags in GWT, and the first line should have a

period.  Did

you run checkstyle or have Eclipse configured to use it?


Ran the code formatter on the whole file and created it in Eclipse.  I
did not run checktyle, but will.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode34
user/test/com/google/gwt/core/client/JsIdentityTest.java:34: return
com.google.gwt.core.Core;
On 2011/07/01 18:38:17, jat wrote:

I'm not sure I follow what all these tests are looking for.



The most basic tests are:



testJavaToJs() { obj=...; assertTrue(jsID(obj, obj)); }
native jsID(a, b) { return a === b; }



testJsToJava() { initJsObj(); a=getJsObj(); b=getJsObj();

assertSame(a, b); }

native initJsObj() { obj = {}; }
native getJsObj() { return obj; }



Having additional tests that store objects and return them later are

fine, but

it is hard for me to tell these cases are covered from the test and I

would

prefer a more direct test for them.


The .contains() test was suggested by another team that was running into
that problem.

testJsoJavaComparison() does your testJstoJava().
testJavaObjectStorage() is similar enough to the first test, just using
== and === in JavaScript instead of indexOf().  It was a simple test
suggested by someone else.
The last test, testJavaArrayArray(), was something I was experiencing
working with scheduled tasks leaking.  I can certainly remove it.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread jat


http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp
File plugins/npapi/ScriptableInstance.cpp (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp#newcode434
plugins/npapi/ScriptableInstance.cpp:434: int id =
localObjects.get(obj);
On 2011/07/01 18:50:17, codefu wrote:

On 2011/07/01 18:38:17, jat wrote:
 So how does this fix the identity problem?  The reason this was

added was to

 avoid the identity problem, since the same JS object passed to the

plugin

twice
 will get different NPObject wrappers.  Has that been fixed now?



Kelly's patch to chrome is not present in Chrome13 builds.  Running

the GWT

tests shows these passing with Chrome13+NewPlugin and failing in
Chrome12+NewPlugin


Did you mean is now present?   If not, I don't understand the
statement.

The old plugin should be passing for the Java-JS direction, right?

How many people are upgraded to Chrome13?  Can we make it so it works on
both, by using different plugins based on the Chrome version?  If not,
can we make it so the new plugin would not get installed on older
Chromes by setting a minimum version?

We would not want people running older Chromes to get updated to
something that works less well.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java
File user/test/com/google/gwt/core/client/JsIdentityTest.java (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode34
user/test/com/google/gwt/core/client/JsIdentityTest.java:34: return
com.google.gwt.core.Core;
On 2011/07/01 18:50:17, codefu wrote:

The last test, testJavaArrayArray(), was something I was experiencing

working

with scheduled tasks leaking.  I can certainly remove it.


No need to remove a test if it is useful.

Please add a test like my first example using JS === to make sure the
same Java object passed twice is in fact the same object seen by JS --
you can keep the testjavaObjectStorage test.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode88
user/test/com/google/gwt/core/client/JsIdentityTest.java:88:
assertTrue(obj1 == obj2);
Use assertSame here instead.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode108
user/test/com/google/gwt/core/client/JsIdentityTest.java:108:
assertTrue(id2 == get2);
Use assertSame.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] [google-web-toolkit] r10418 committed - Update pre-built requestfactory-apt.jar to r10417.

2011-07-01 Thread codesite-noreply

Revision: 10418
Author:   gwt.mirror...@gmail.com
Date: Fri Jul  1 12:22:05 2011
Log:  Update pre-built requestfactory-apt.jar to r10417.

http://code.google.com/p/google-web-toolkit/source/detail?r=10418

Modified:
 /tools/lib/requestfactory/requestfactory-apt.jar

===
--- /tools/lib/requestfactory/requestfactory-apt.jar	Fri Jun 17 13:08:11  
2011
+++ /tools/lib/requestfactory/requestfactory-apt.jar	Fri Jul  1 12:22:05  
2011

Binary file, no diff available.

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), (issue1469803)

2011-07-01 Thread codefu


http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp
File plugins/npapi/ScriptableInstance.cpp (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/plugins/npapi/ScriptableInstance.cpp#newcode434
plugins/npapi/ScriptableInstance.cpp:434: int id =
localObjects.get(obj);
On 2011/07/01 19:00:48, jat wrote:

On 2011/07/01 18:50:17, codefu wrote:
 On 2011/07/01 18:38:17, jat wrote:
  So how does this fix the identity problem?  The reason this was

added was to

  avoid the identity problem, since the same JS object passed to the

plugin

 twice
  will get different NPObject wrappers.  Has that been fixed now?

 Kelly's patch to chrome is not present in Chrome13 builds.  Running

the GWT

 tests shows these passing with Chrome13+NewPlugin and failing in
 Chrome12+NewPlugin



Did you mean is now present?   If not, I don't understand the

statement.


The old plugin should be passing for the Java-JS direction, right?



How many people are upgraded to Chrome13?  Can we make it so it works

on both,

by using different plugins based on the Chrome version?  If not, can

we make it

so the new plugin would not get installed on older Chromes by setting

a minimum

version?



We would not want people running older Chromes to get updated to

something that

works less well.


Sorry, is now present in Chrome 13 builds according to the engineer
responsible for committing the patch.  I will check on the requirements
for supporting older versions.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java
File user/test/com/google/gwt/core/client/JsIdentityTest.java (right):

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode34
user/test/com/google/gwt/core/client/JsIdentityTest.java:34: return
com.google.gwt.core.Core;
On 2011/07/01 19:00:48, jat wrote:

On 2011/07/01 18:50:17, codefu wrote:
 The last test, testJavaArrayArray(), was something I was

experiencing working

 with scheduled tasks leaking.  I can certainly remove it.



No need to remove a test if it is useful.



Please add a test like my first example using JS === to make sure the

same Java

object passed twice is in fact the same object seen by JS -- you can

keep the

testjavaObjectStorage test.


Easy enough to add!

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode88
user/test/com/google/gwt/core/client/JsIdentityTest.java:88:
assertTrue(obj1 == obj2);
On 2011/07/01 19:00:48, jat wrote:

Use assertSame here instead.


Done.

http://gwt-code-reviews.appspot.com/1469803/diff/1/user/test/com/google/gwt/core/client/JsIdentityTest.java#newcode108
user/test/com/google/gwt/core/client/JsIdentityTest.java:108:
assertTrue(id2 == get2);
On 2011/07/01 19:00:48, jat wrote:

Use assertSame.


Done.

http://gwt-code-reviews.appspot.com/1469803/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Remove JSNI paths from RPC deserialization. AKA: Make RPC screaming fast in DevMode. (issue1470802)

2011-07-01 Thread cromwellian

LGTM

http://gwt-code-reviews.appspot.com/1470802/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Remove JSNI paths from RPC deserialization. AKA: Make RPC screaming fast in DevMode. (issue1470802)

2011-07-01 Thread zundel

lgtm2


http://gwt-code-reviews.appspot.com/1470802/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)

2011-07-01 Thread cromwellian


I made the fixes and submitted it. Since most people are headed out of
the office for the holiday, I need to get it in early to see if I need
to revert it before everyone is gone. :)



http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
File dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
(right):

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode93
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:93:
On 2011/07/01 10:24:38, jbrosenberg wrote:

whitespace


Done.

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode600
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:600:
instantiatedTypes.add(type);
On 2011/07/01 10:24:38, jbrosenberg wrote:

Suggest combining all this into 1 method call to something like
(maybeRescueClassLiteral(type)), and then mRCL contains logic to see

if

classLiteralsToBeRescuedIfGetClassLive is null or not, to decide

whether to

rescue or mark for rescue.


Done.

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode769
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:769:
if (classLiteralsToBeRescuedIfGetClassIsLive != null) {
Not sure, but rescueClassLiteral can end up invoking this function
again, and you'll get a concurrent modification exception if you don't
clone, and if you do, you end up with extra work.

On 2011/07/01 10:24:38, jbrosenberg wrote:

is re-entrant the right term (I usually think of it wrt to

concurrency)?

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode870
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:870:
On 2011/07/01 10:24:38, jbrosenberg wrote:

whitespace


Done.

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode917
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:917:
/**
On 2011/07/01 10:24:38, jbrosenberg wrote:

C


IDE has bizarre bug where it was randomly inserting these.

http://gwt-code-reviews.appspot.com/1447821/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread rdcastro

I had a few nits below but I felt a bit out of context. Is there an
overview somewhere of what you guys are trying to accomplish? What
should rendering for Cells look like?


http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java
File user/src/com/google/gwt/uibinder/client/UiRenderer.java (right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRenderer.java#newcode32
user/src/com/google/gwt/uibinder/client/UiRenderer.java:32: * @param
cell {@link com.google.gwt.cell.client.Cell Cell} that will receive the
event
You should add a blank line before @param

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java
File user/src/com/google/gwt/uibinder/client/UiRendererUtils.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode38
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:38: *
Retrieves a specific element within a previously rendered elements.
/s/elements./element./

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode41
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:41: *
@param fieldName name of the field to retrieve
you forgo the javadoc for attribute (I was actually curious about that
one :-) )

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode45
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:45: Element
root = findRootElement(parent, attribute);
Do you really need the root element? Couldn't you just check if parent
is attached?

http://gwt-code-reviews.appspot.com/1466809/diff/1/user/src/com/google/gwt/uibinder/client/UiRendererUtils.java#newcode87
user/src/com/google/gwt/uibinder/client/UiRendererUtils.java:87: assert
isRenderedElementSingleChild(ret)//
Are the trailing // on purpose?

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread rchandia

On 2011/07/01 20:59:37, rdcastro wrote:

I had a few nits below but I felt a bit out of context. Is there an

overview

somewhere of what you guys are trying to accomplish? What should

rendering for

Cells look like?


Yes, we have a design doc... which I forgot to share. Here is the link,
comments welcome:

https://docs.google.com/a/google.com/document/pub?id=1a-_8IdBrBmWCnhV6rnQVmzXB_bXQ9JQ4ya-k1_s1_sA



http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread stephen . haberman



https://docs.google.com/a/google.com/document/pub?id=1a-_8IdBrBmWCnhV6rnQVmzXB_bXQ9JQ4ya-k1_s1_sA

Is it okay to make that public?

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread Rafael Castro
Thanks for sharing, I'll read it tomorrow and try and come up with
more interesting suggestions :-)

On Fri, Jul 1, 2011 at 6:14 PM,  rchan...@google.com wrote:
 On 2011/07/01 20:59:37, rdcastro wrote:

 I had a few nits below but I felt a bit out of context. Is there an

 overview

 somewhere of what you guys are trying to accomplish? What should

 rendering for

 Cells look like?

 Yes, we have a design doc... which I forgot to share. Here is the link,
 comments welcome:

 https://docs.google.com/a/google.com/document/pub?id=1a-_8IdBrBmWCnhV6rnQVmzXB_bXQ9JQ4ya-k1_s1_sA



 http://gwt-code-reviews.appspot.com/1466809/


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)

2011-07-01 Thread rchandia

On 2011/07/01 21:19:25, stephenh wrote:




https://docs.google.com/a/google.com/document/pub?id=1a-_8IdBrBmWCnhV6rnQVmzXB_bXQ9JQ4ya-k1_s1_sA


Is it okay to make that public?

I think it is OK. We usually publish them in the Wiki, but Docs is
getting so good that I wanted to try it this way.


http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)

2011-07-01 Thread Ray Cromwell
Oops, there's a problem, I need one more cycle before I can commit.
Will send patch tonite. :(


On Fri, Jul 1, 2011 at 1:43 PM,  cromwell...@google.com wrote:

 I made the fixes and submitted it. Since most people are headed out of
 the office for the holiday, I need to get it in early to see if I need
 to revert it before everyone is gone. :)



 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
 File dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
 (right):

 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode93
 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:93:
 On 2011/07/01 10:24:38, jbrosenberg wrote:

 whitespace

 Done.

 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode600
 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:600:
 instantiatedTypes.add(type);
 On 2011/07/01 10:24:38, jbrosenberg wrote:

 Suggest combining all this into 1 method call to something like
 (maybeRescueClassLiteral(type)), and then mRCL contains logic to see

 if

 classLiteralsToBeRescuedIfGetClassLive is null or not, to decide

 whether to

 rescue or mark for rescue.

 Done.

 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode769
 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:769:
 if (classLiteralsToBeRescuedIfGetClassIsLive != null) {
 Not sure, but rescueClassLiteral can end up invoking this function
 again, and you'll get a concurrent modification exception if you don't
 clone, and if you do, you end up with extra work.

 On 2011/07/01 10:24:38, jbrosenberg wrote:

 is re-entrant the right term (I usually think of it wrt to

 concurrency)?

 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode870
 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:870:
 On 2011/07/01 10:24:38, jbrosenberg wrote:

 whitespace

 Done.

 http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode917
 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:917:
 /**
 On 2011/07/01 10:24:38, jbrosenberg wrote:

 C

 IDE has bizarre bug where it was randomly inserting these.

 http://gwt-code-reviews.appspot.com/1447821/


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] UnifyAst correctly handles polymorphic overrides with mixed default/public access. (issue1470803)

2011-07-01 Thread scottb

Reviewers: zundel, jbrosenberg,

Message:
Hey guys,

Please review.  This fixes the front-end issue withe GwtAstBuilder,
bringing it up to parity with GenerateJavaAST.

However, there *is* in fact a bug in the backend.  See:
http://gwt-code-reviews.appspot.com/1470803/

But I want to go ahead and get this fix in, the bug has been around
forever, it would seem.

Description:
GWT AST now tracks method access.  This is used by UnifyAst to correctly
compute overrides.  Before, UnifyAst would allow a public method to
override a default-access method in a different package, which is
illegal.


Please review this at http://gwt-code-reviews.appspot.com/1470803/

Affected files:
  A dev/core/src/com/google/gwt/dev/jjs/ast/AccessModifiers.java
  M dev/core/src/com/google/gwt/dev/jjs/ast/JConstructor.java
  M dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java
  M dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/ReferenceMapper.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/ToStringGenerationVisitor.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
  M dev/core/test/com/google/gwt/dev/jjs/impl/PrunerTest.java


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)

2011-07-01 Thread jbrosenberg


http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
File dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
(right):

http://gwt-code-reviews.appspot.com/1447821/diff/15001/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode769
dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:769:
if (classLiteralsToBeRescuedIfGetClassIsLive != null) {
Ah, so you're saying it could re-enter recursively...

http://gwt-code-reviews.appspot.com/1447821/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors