- 
                Notifications
    
You must be signed in to change notification settings  - Fork 382
 
Java 12-17API additions #10106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Java 12-17API additions #10106
Conversation
42c7d0a    to
    ec22afe      
    Compare
  
    There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work on the draft - some quick feedback
        
          
                .../test-super/com/google/gwt/dev/jjs/super/com/google/gwt/emultest/java12/lang/StringTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                user/test/com/google/gwt/emultest/java12/util/stream/CollectorsTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                .../com/google/gwt/dev/jjs/super/com/google/gwt/emultest/java12/util/stream/CollectorsTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                user/super/com/google/gwt/emul/java/util/stream/Collectors.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                .../com/google/gwt/dev/jjs/super/com/google/gwt/emultest/java12/util/stream/CollectorsTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
      | assertEquals(3, hideFromCompiler("foo").transform(String::length)); | ||
| } | ||
| 
               | 
          ||
| public void testIndent() { | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please also include a set of these tests that does not do a hideFromCompiler, so we can make sure that if the compiler is able to constant-fold these method calls, that it does so correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not implement any tests without hideFromCompiler yet since I wasn't sure which methods need them. It seems that tests either hide all inputs from compiler (like the ones from https://github.com/gwtproject/gwt/pull/9975/files#diff-79013db0b72ddfb9522327d93e6c5804f44c160025590e971ddfc7fd4eb7c045R26 ) or hide nothing (https://github.com/zbynek/gwt/blob/f0c1486a46018aec9de93458136cfc161f569e81/user/test/com/google/gwt/emultest/java/lang/StringTest.java#L542 ). Also I'm not sure if it wouldn't be better to test the constant-folding optimization and verify that these are actually folded rather than make assertions where we don't know if we're testing folding or emulation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using hideFromCompiler ensures that the emulated sources provided can be called and function the way that the test expects. Passing a constant and allowing constant folding means that the operation will be performed by the compiler itself, using the JRE's own implementation, which does two things for us: we know that constant folding doesn't somehow break with this call, and that the JRE implementation doesn't behave in a way that fails the test.
This isn't a guarantee - the constant folding mechanism is pretty specific (I've been meaning to file a bug about that) and won't always kick in, but it does let us get a little more coverage.
077dfea    to
    55d86e0      
    Compare
  
    033deb4    to
    b6adb5d      
    Compare
  
    0257e71    to
    b8996b5      
    Compare
  
    ec661eb    to
    a8e31dc      
    Compare
  
            
          
                user/super/com/google/gwt/emul/java/util/stream/LongStream.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                ...m/google/gwt/emultest/super/com/google/gwt/emultest/java17/util/stream/DoubleStreamTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                dev/core/src/com/google/gwt/dev/javac/testing/impl/JavaResourceBase.java
          
            Show resolved
            Hide resolved
        
              
          
                ...test-super/com/google/gwt/emultest/super/com/google/gwt/emultest/java17/lang/StringTest.java
          
            Show resolved
            Hide resolved
        
      Co-authored-by: Colin Alworth <[email protected]>
| assertEquals("x\n y", hideFromCompiler(" x\n y").stripIndent()); | ||
| assertEquals("x\n\ny", hideFromCompiler(" x\n \n y").stripIndent()); | ||
| assertEquals(" x\ny", hideFromCompiler("\t x\r\n y").stripIndent()); | ||
| } | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should have a handful of more tests too:
" x\n. "to confirm that the second line is entirely removed" x\n\n y"to confirm blank lines do not have their indent counted- ...except the last line, where a blank line's indent is meaningful. Combining the above two notes, something like 
" x\n "should yield" x\n"(and" x\n "should have the same result) 
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#stripIndent()
        
          
                ...com/google/gwt/emultest/super/com/google/gwt/emultest/java17/util/stream/CollectorsTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                ...uper/com/google/gwt/emultest/super/com/google/gwt/emultest/java17/lang/CharSequenceTest.java
          
            Show resolved
            Hide resolved
        
              
          
                ...st-super/com/google/gwt/emultest/super/com/google/gwt/emultest/java17/util/MapEntryTest.java
          
            Show resolved
            Hide resolved
        
              
          
                ...m/google/gwt/emultest/super/com/google/gwt/emultest/java17/util/stream/DoubleStreamTest.java
          
            Show resolved
            Hide resolved
        
              
          
                .../com/google/gwt/emultest/super/com/google/gwt/emultest/java17/util/stream/IntStreamTest.java
          
            Show resolved
            Hide resolved
        
              
          
                user/test/com/google/gwt/emultest/java17/util/stream/DoubleStreamTest.java
          
            Show resolved
            Hide resolved
        
              
          
                user/test/com/google/gwt/emultest/java17/util/stream/LongStreamTest.java
          
            Show resolved
            Hide resolved
        
      Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
Co-authored-by: Colin Alworth <[email protected]>
        
          
                user/test/com/google/gwt/emultest/java17/util/stream/DoubleStreamTest.java
              
                Outdated
          
            Show resolved
            Hide resolved
        
      Co-authored-by: Colin Alworth <[email protected]>
Fixes #9872
Fixes #10091
Fixes #9991