Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8222171

Inferred type does not conform to equality error on macOS

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 12
    • tools
    • x86
    • os_x

      ADDITIONAL SYSTEM INFORMATION :
      OS: macOS High Siera 10.13.6

      Java:
      openjdk 12 2019-03-19
      OpenJDK Runtime Environment (build 12+33)
      OpenJDK 64-Bit Server VM (build 12+33, mixed mode, sharing)

      A DESCRIPTION OF THE PROBLEM :
      when executing "java TeeingCollector.java" on macOS I get a compilation error. Executing the same command with the same class on other OS (Ubuntu/Windows) yields no error

      video:
      https://drive.google.com/file/d/1MiPObqxz7M4yomkxuKSRLsrccubYHpa2/view

      REGRESSION : Last worked in version 12

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      execute on macOS
      java TeeingCollector.java

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      [[foo, bar], [hello, world]]
      ACTUAL -
      TeeingCollector.java:14: error: incompatible types: inferred type does not conform to equality constraint(s)
                      .collect(Collectors.teeing(
                              ^
          inferred: List<String>
          equality constraints(s): List<Object>,R
        where R,T,A are type-variables:
          R extends Object declared in method <T,A,R>filtering(Predicate<? super T>,Collector<? super T,A,R>)
          T extends Object declared in method <T,A,R>filtering(Predicate<? super T>,Collector<? super T,A,R>)
          A extends Object declared in method <T,A,R>filtering(Predicate<? super T>,Collector<? super T,A,R>)
      1 error
      error: compilation failed

      ---------- BEGIN SOURCE ----------
      import java.util.List;
      import java.util.function.Predicate;
      import java.util.stream.Collectors;
      import java.util.stream.IntStream;
      import java.util.stream.Stream;

      import static java.util.function.Predicate.not;

      public class TeeingCollector {

          public static void main(String[] args) {
              //var strs = List.of("abc");
              var dividedStrings = Stream.of("foo", "hello", "bar", "world")
                      .collect(Collectors.teeing(
                              Collectors.filtering((String s) -> s.length() <= 3, Collectors.toList()),
                              Collectors.filtering((String s) -> s.length() > 3, Collectors.toList()),
                              List::of
                      ));
              System.out.println(dividedStrings);

          }

          private static class Employee {
              boolean isActive;

              public Employee(boolean isActive) {
                  this.isActive = isActive;
              }

              public boolean isActive() {
                  return isActive;
              }

              @Override
              public String toString() {
                  return "Employee{" +
                          "isActive=" + isActive +
                          '}';
              }
          }
          private static class MaxMin {
              int max;
              int min;

              MaxMin(int max, int min) {
                  this.max = max;
                  this.min = min;
              }

              @Override
              public String toString() {
                  return "MaxMin{" +
                          "max=" + max +
                          ", min=" + min +
                          '}';
              }
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      uncomment "var strs = List.of("abc");"
      or explicitly specify stream type "Stream.<String>of("foo", "hello", "bar", "world") ..."
      or first compile the class (javac) then execute it (java)

      FREQUENCY : always


            pardesha Pardeep Sharma
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: