Hmm looks like a bug and/or bad error reporting. I could imagine that it 
fails because you have code calling the @GwtIncompatible method. Yes it is 
not called at runtime but the AST maintained by the compiler at compile 
time might be broken now. I think your code must not be broken once 
@GwtIncompatible code has been removed.

What I did in my code was to implement a client version of the method and 
then override that method in a sub class to provide a JRE version. I have 
then marked that overridden method as incompatible. So when the compiler 
does not see the overridden JRE method then the calling code is still valid.

So maybe try something like:

void download() {
  Downloader downloader;
  if (GWT.isClient()) {
    downloader = new GwtDownloader();
  } else {
    downloader = new JreDownloader();
  }
  downloader.download();
}

// should NOT be abstract, because code would be invalid if 
JreDownloader.download() is not seen by the compiler
class Downloader {
  void download() {
    // no-op
  }
}

class GwtDownloader extends Downloader {
  @Override
  void download() {
   // GWT version
  }
}

class JreDownloader extends Downloader {
  // When this method is not seen by the Compiler all code is still valid, 
as the no-op method would be called. 
  // (it would not turn red in your IDE if you would delete that overridden 
method)
  @GwtIncompatible
  @Override
  void download() {
   // JRE version
  }
}


Does that help?

-- J.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to