--- old/src/java.base/share/classes/java/time/temporal/ValueRange.java 2020-02-20 14:10:39.000000000 -0800 +++ new/src/java.base/share/classes/java/time/temporal/ValueRange.java 2020-02-20 14:10:38.000000000 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -145,6 +145,9 @@ * or the smallest maximum is greater than the largest maximum */ public static ValueRange of(long min, long maxSmallest, long maxLargest) { + if (min > maxSmallest) { + throw new IllegalArgumentException("Minimum value must be less than smallest maximum value"); + } return of(min, min, maxSmallest, maxLargest); } @@ -160,8 +163,9 @@ * @return the ValueRange for smallest min, largest min, smallest max, largest max, not null * @throws IllegalArgumentException if * the smallest minimum is greater than the smallest maximum, - * or the smallest maximum is greater than the largest maximum - * or the largest minimum is greater than the largest maximum + * or the smallest maximum is greater than the largest maximum, + * or the largest minimum is greater than the largest maximum, + * or the smallest minimum is greater than the largest minimum */ public static ValueRange of(long minSmallest, long minLargest, long maxSmallest, long maxLargest) { if (minSmallest > minLargest) { @@ -171,7 +175,10 @@ throw new IllegalArgumentException("Smallest maximum value must be less than largest maximum value"); } if (minLargest > maxLargest) { - throw new IllegalArgumentException("Minimum value must be less than maximum value"); + throw new IllegalArgumentException("Largest minimum value must be less than largest maximum value"); + } + if (minSmallest > maxSmallest) { + throw new IllegalArgumentException("Smallest minimum value must be less than smallest maximum value"); } return new ValueRange(minSmallest, minLargest, maxSmallest, maxLargest); } --- old/test/jdk/java/time/test/java/time/temporal/TestDateTimeValueRange.java 2020-02-20 14:10:40.000000000 -0800 +++ new/test/jdk/java/time/test/java/time/temporal/TestDateTimeValueRange.java 2020-02-20 14:10:40.000000000 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -75,6 +75,7 @@ /** * Test. + * @bug 8239520 */ @Test public class TestDateTimeValueRange extends AbstractTest { @@ -138,6 +139,11 @@ ValueRange.of(1, 31, 28); } + @Test(expectedExceptions = IllegalArgumentException.class) + public void test_of_longlonglong_minGtSmallestMax() { + ValueRange.of(5, 2, 10); + } + //----------------------------------------------------------------------- // of(long,long,long,long) //----------------------------------------------------------------------- @@ -178,6 +184,7 @@ {2, 1, 28, 31}, {2, 1, 31, 28}, {12, 13, 1, 2}, + {5, 5, 2, 10}, }; }