Monday, June 8, 2020

Re: GWTC 2.9.0 has problems compiling my generics

Has somebody created an issue to fix this regression ? This is blocking me from migrating to GWT 2.9.0

On Friday, May 29, 2020 at 5:54:14 PM UTC+2, Thomas Broyer wrote:
Log of the error in our project:
   Tracing compile failure path for type 'org.waveprotocol.wave.model.supplement.WaveletBasedSupplement'
     
[ERROR] Errors in 'jar:file:/home/tbr/.gradle/caches/modules-2/files-2.1/org.waveprotocol.waveinabox/waveinabox-model/0.3-atolcd-1206559-patched-4/4a2a46fd36d1308d05cc705a3ee055401c6cc5e3/waveinabox-model-0.3-atolcd-1206559-patched-4-sources.jar!/org/waveprotocol/wave/model/supplement/WaveletBasedSupplement.java'
         
[ERROR] Line 948: The method createWaveletSeenVersion(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#88-of ?,capture#90-of ? extends N>)
         
[ERROR] Line 943: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#85-of ?,capture#86-of ?>)
         
[ERROR] Line 953: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#91-of ?,capture#92-of ?>)
         
[ERROR] Line 918: The method createMuted(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#70-of ?,capture#72-of ? extends N>)
         
[ERROR] Line 933: The method createPendingNotification(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#79-of ?,capture#81-of ? extends N>)
         
[ERROR] Line 938: The method createWaveletReadState(DocumentEventRouter<? super E,E,?>, ObservablePrimitiveSupplement.Listener) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#82-of ?,capture#84-of ? extends N>, ObservablePrimitiveSupplement.Listener)
         
[ERROR] Line 958: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#94-of ?,capture#95-of ?>)
         
[ERROR] Line 923: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#73-of ?,capture#74-of ?>)
         
[ERROR] Line 913: The method createFolders(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#67-of ?,capture#69-of ? extends N>)
         
[ERROR] Line 913: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#67-of ?,capture#68-of ?>)
         
[ERROR] Line 938: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#82-of ?,capture#83-of ?>)
         
[ERROR] Line 933: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#79-of ?,capture#80-of ?>)
         
[ERROR] Line 943: The method createWaveletCollapsedState(DocumentEventRouter<? super E,E,?>, ObservablePrimitiveSupplement.Listener) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#85-of ?,capture#87-of ? extends N>, ObservablePrimitiveSupplement.Listener)
         
[ERROR] Line 948: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#88-of ?,capture#89-of ?>)
         
[ERROR] Line 923: The method createCleared(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#73-of ?,capture#75-of ? extends N>)
         
[ERROR] Line 958: The method createAbuseStore(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#94-of ?,capture#96-of ? extends N>)
         
[ERROR] Line 953: The method createWaveletNotifiedVersion(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#91-of ?,capture#93-of ? extends N>)
         
[ERROR] Line 918: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#70-of ?,capture#71-of ?>)
         
[ERROR] Line 963: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#97-of ?,capture#98-of ?>)
         
[ERROR] Line 928: The method create(ObservableMutableDocument<N,E,?>) in the type DefaultDocumentEventRouter is not applicable for the arguments (ObservableMutableDocument<N,capture#76-of ?,capture#77-of ?>)
         
[ERROR] Line 963: The method createGadgetStatesDoc(DocumentEventRouter<? super E,E,?>, ObservablePrimitiveSupplement.Listener) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#97-of ?,capture#99-of ? extends N>, ObservablePrimitiveSupplement.Listener)
         
[ERROR] Line 928: The method createWaveletArchiveState(DocumentEventRouter<? super E,E,?>) in the type WaveletBasedSupplement is not applicable for the arguments (DocumentEventRouter<N,capture#76-of ?,capture#78-of ? extends N>)
   
[ERROR] Aborting compile due to errors in some input files


This is the exact file that doesn't compile (and yes, it's very, very old! not even the latest code from the Wave project)


Fortunately, we're not actually using that class, and the build actually only fails because of -failOnError. This means I can work around the issue by excluding the file with some gwt.xml trick (I want to keep the -failOnError).
But you get an idea (and repro-case, albeit a non-self-contained and quite complex one) of what can cause issues with 2.9.0.

On Friday, May 29, 2020 at 2:07:07 PM UTC+2, David Nouls wrote:
I switched from GWT 2.8.2 to GWT 2.9.0 and I get some GWTC compilation errors when compiling with certain generic constructs.
It compiles fine with JDK11 and in IntelliJ, but GWTC no longer seems to support this:

[INFO] --- gwt-maven-plugin:1.0.0:compile (default-compile) @ cloud.platform.ui.demo-app ---
[INFO] Compiling module com.swift.cloud.platform.ui.demo.Demo
[INFO]    Tracing compile failure path for type 'com.swift.cloud.platform.ui.webcomponent.widget.query.QueryEditor'
[INFO]       [ERROR] Errors in 'jar:file:/home/dnouls/liteevolutiontfr/platform/main/ui/webcomponent/target/cloud.platform.ui.webcomponent-0.0.5-SNAPSHOT.jar!/com/swift/cloud/platform/ui/webcomponent/widget/query/QueryEditor.java'
[INFO]          [ERROR] Line 376: The method byKey(IFilterKey<KEY>) in the type QueryConfiguration is not applicable for the arguments (capture#67-of ? extends IFilterKey<?>)
[INFO]    [ERROR] Aborting compile due to errors in some input files


A small piece of the QueryEditor class where this error is reported:

  public void setFilterKeys(Set<? extends IFilterKey<?>> filterKeys) {
    this.allowedFilterKeys = filterKeys.stream().filter(key -> config.byKey(key).isPresent()).collect(Collectors.toCollection(ArrayList::new));

    // sort by label
    allowedFilterKeys.sort(Comparator.comparing(config.getLabels()::getKeyLabel));
  }

This is the method that it is trying to call:
  @SuppressWarnings("unchecked")
  public <KEY, VO, CONFIG extends AbstractCriteria<KEY, VO, CONFIG>> Optional<CONFIG> byKey(IFilterKey<KEY> key) {
    return Optional.ofNullable((CONFIG) byKey.get(key));
  }

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/3afd2fed-3c77-4056-9653-f2ea394878dbo%40googlegroups.com.

No comments:

Post a Comment