RFR JDK 8: 8022190 Fix varargs lint warnings in the JDK
Joe Darcy
joe.darcy at oracle.com
Mon Aug 5 01:04:41 UTC 2013
Hello,
Please review this fix for
8022190: Fix varargs lint warnings in the JDK
http://cr.openjdk.java.net/~darcy/8022190.0/
Full patch below.
While the @SafeVarargs annotation generally suppresses compiler warnings
about methods, when the varargs lint option is enabled, javac does some
checking of the body to see if it is indeed safe. If it cannot be proven
safe, javac will issue a warning.
The the four cases below, javac is unable to determine that the methods
are safe. The @SuppressWarnings("varargs") annotations added below help
javac out in this regard.
Thanks,
-Joe
diff -r 33617583c545 src/share/classes/java/util/stream/Stream.java
--- a/src/share/classes/java/util/stream/Stream.java Wed Jul 31
10:53:33 2013 -0700
+++ b/src/share/classes/java/util/stream/Stream.java Sun Aug 04
18:02:15 2013 -0700
@@ -827,6 +827,7 @@
* @return the new stream
*/
@SafeVarargs
+ @SuppressWarnings("varargs") // Creating a stream for an array is safe
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
diff -r 33617583c545 src/share/classes/javax/swing/SwingWorker.java
--- a/src/share/classes/javax/swing/SwingWorker.java Wed Jul 31
10:53:33 2013 -0700
+++ b/src/share/classes/javax/swing/SwingWorker.java Sun Aug 04
18:02:15 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights
reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -405,6 +405,7 @@
*
*/
@SafeVarargs
+ @SuppressWarnings("varargs") // Passing chunks to add is safe
protected final void publish(V... chunks) {
synchronized (this) {
if (doProcess == null) {
diff -r 33617583c545
src/share/classes/sun/reflect/annotation/AnnotationParser.java
--- a/src/share/classes/sun/reflect/annotation/AnnotationParser.java Wed
Jul 31 10:53:33 2013 -0700
+++ b/src/share/classes/sun/reflect/annotation/AnnotationParser.java Sun
Aug 04 18:02:15 2013 -0700
@@ -88,6 +88,7 @@
* @param selectAnnotationClasses an array of annotation types to
select when parsing
*/
@SafeVarargs
+ @SuppressWarnings("varargs") // selectAnnotationClasses is used safely
static Map<Class<? extends Annotation>, Annotation>
parseSelectAnnotations(
byte[] rawAnnotations,
ConstantPool constPool,
diff -r 33617583c545 src/share/classes/sun/swing/AccumulativeRunnable.java
--- a/src/share/classes/sun/swing/AccumulativeRunnable.java Wed Jul
31 10:53:33 2013 -0700
+++ b/src/share/classes/sun/swing/AccumulativeRunnable.java Sun Aug
04 18:02:15 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights
reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -121,6 +121,7 @@
* @param args the arguments to accumulate
*/
@SafeVarargs
+ @SuppressWarnings("varargs") // Copying args is safe
public final synchronized void add(T... args) {
boolean isSubmitted = true;
if (arguments == null) {
More information about the core-libs-dev
mailing list