mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
Merge
This commit is contained in:
commit
ff7f1b9999
15 changed files with 280 additions and 18 deletions
|
@ -588,10 +588,21 @@ public class Types {
|
||||||
case BYTE: case CHAR: case SHORT: case INT: case LONG: case FLOAT:
|
case BYTE: case CHAR: case SHORT: case INT: case LONG: case FLOAT:
|
||||||
case DOUBLE: case BOOLEAN: case VOID: case BOT: case NONE:
|
case DOUBLE: case BOOLEAN: case VOID: case BOT: case NONE:
|
||||||
return t.tag == s.tag;
|
return t.tag == s.tag;
|
||||||
case TYPEVAR:
|
case TYPEVAR: {
|
||||||
return s.isSuperBound()
|
if (s.tag == TYPEVAR) {
|
||||||
&& !s.isExtendsBound()
|
//type-substitution does not preserve type-var types
|
||||||
&& visit(t, upperBound(s));
|
//check that type var symbols and bounds are indeed the same
|
||||||
|
return t.tsym == s.tsym &&
|
||||||
|
visit(t.getUpperBound(), s.getUpperBound());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//special case for s == ? super X, where upper(s) = u
|
||||||
|
//check that u == t, where u has been set by Type.withTypeVar
|
||||||
|
return s.isSuperBound() &&
|
||||||
|
!s.isExtendsBound() &&
|
||||||
|
visit(t, upperBound(s));
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
throw new AssertionError("isSameType " + t.tag);
|
throw new AssertionError("isSameType " + t.tag);
|
||||||
}
|
}
|
||||||
|
@ -1850,13 +1861,16 @@ public class Types {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Same as {@link #setBounds(Type.TypeVar,List,Type)}, except that
|
* Same as {@link #setBounds(Type.TypeVar,List,Type)}, except that
|
||||||
* third parameter is computed directly. Note that this test
|
* third parameter is computed directly, as follows: if all
|
||||||
* might cause a symbol completion. Hence, this version of
|
* all bounds are interface types, the computed supertype is Object,
|
||||||
|
* otherwise the supertype is simply left null (in this case, the supertype
|
||||||
|
* is assumed to be the head of the bound list passed as second argument).
|
||||||
|
* Note that this check might cause a symbol completion. Hence, this version of
|
||||||
* setBounds may not be called during a classfile read.
|
* setBounds may not be called during a classfile read.
|
||||||
*/
|
*/
|
||||||
public void setBounds(TypeVar t, List<Type> bounds) {
|
public void setBounds(TypeVar t, List<Type> bounds) {
|
||||||
Type supertype = (bounds.head.tsym.flags() & INTERFACE) != 0 ?
|
Type supertype = (bounds.head.tsym.flags() & INTERFACE) != 0 ?
|
||||||
supertype(bounds.head) : null;
|
syms.objectType : null;
|
||||||
setBounds(t, bounds, supertype);
|
setBounds(t, bounds, supertype);
|
||||||
t.rank_field = -1;
|
t.rank_field = -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1472,7 +1472,7 @@ public class Attr extends JCTree.Visitor {
|
||||||
// Attribute clazz expression and store
|
// Attribute clazz expression and store
|
||||||
// symbol + type back into the attributed tree.
|
// symbol + type back into the attributed tree.
|
||||||
Type clazztype = attribType(clazz, env);
|
Type clazztype = attribType(clazz, env);
|
||||||
Pair<Scope,Scope> mapping = getSyntheticScopeMapping((ClassType)clazztype);
|
Pair<Scope,Scope> mapping = getSyntheticScopeMapping(clazztype);
|
||||||
if (!TreeInfo.isDiamond(tree)) {
|
if (!TreeInfo.isDiamond(tree)) {
|
||||||
clazztype = chk.checkClassType(
|
clazztype = chk.checkClassType(
|
||||||
tree.clazz.pos(), clazztype, true);
|
tree.clazz.pos(), clazztype, true);
|
||||||
|
@ -1640,9 +1640,10 @@ public class Attr extends JCTree.Visitor {
|
||||||
List<Type> argtypes,
|
List<Type> argtypes,
|
||||||
List<Type> typeargtypes,
|
List<Type> typeargtypes,
|
||||||
boolean reportErrors) {
|
boolean reportErrors) {
|
||||||
if (clazztype.isErroneous()) {
|
if (clazztype.isErroneous() || mapping == erroneousMapping) {
|
||||||
//if the type of the instance creation expression is erroneous
|
//if the type of the instance creation expression is erroneous,
|
||||||
//return the erroneous type itself
|
//or something prevented us to form a valid mapping, return the
|
||||||
|
//(possibly erroneous) type unchanged
|
||||||
return clazztype;
|
return clazztype;
|
||||||
}
|
}
|
||||||
else if (clazztype.isInterface()) {
|
else if (clazztype.isInterface()) {
|
||||||
|
@ -1740,7 +1741,10 @@ public class Attr extends JCTree.Visitor {
|
||||||
* inference. The inferred return type of the synthetic constructor IS
|
* inference. The inferred return type of the synthetic constructor IS
|
||||||
* the inferred type for the diamond operator.
|
* the inferred type for the diamond operator.
|
||||||
*/
|
*/
|
||||||
private Pair<Scope, Scope> getSyntheticScopeMapping(ClassType ctype) {
|
private Pair<Scope, Scope> getSyntheticScopeMapping(Type ctype) {
|
||||||
|
if (ctype.tag != CLASS) {
|
||||||
|
return erroneousMapping;
|
||||||
|
}
|
||||||
Pair<Scope, Scope> mapping =
|
Pair<Scope, Scope> mapping =
|
||||||
new Pair<Scope, Scope>(ctype.tsym.members(), new Scope(ctype.tsym));
|
new Pair<Scope, Scope>(ctype.tsym.members(), new Scope(ctype.tsym));
|
||||||
List<Type> typevars = ctype.tsym.type.getTypeArguments();
|
List<Type> typevars = ctype.tsym.type.getTypeArguments();
|
||||||
|
@ -1763,6 +1767,8 @@ public class Attr extends JCTree.Visitor {
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Pair<Scope,Scope> erroneousMapping = new Pair<Scope,Scope>(null, null);
|
||||||
|
|
||||||
/** Make an attributed null check tree.
|
/** Make an attributed null check tree.
|
||||||
*/
|
*/
|
||||||
public JCExpression makeNullCheck(JCExpression arg) {
|
public JCExpression makeNullCheck(JCExpression arg) {
|
||||||
|
|
|
@ -886,6 +886,7 @@ public class Check {
|
||||||
void checkRaw(JCTree tree, Env<AttrContext> env) {
|
void checkRaw(JCTree tree, Env<AttrContext> env) {
|
||||||
if (lint.isEnabled(Lint.LintCategory.RAW) &&
|
if (lint.isEnabled(Lint.LintCategory.RAW) &&
|
||||||
tree.type.tag == CLASS &&
|
tree.type.tag == CLASS &&
|
||||||
|
!TreeInfo.isDiamond(tree) &&
|
||||||
!env.enclClass.name.isEmpty() && //anonymous or intersection
|
!env.enclClass.name.isEmpty() && //anonymous or intersection
|
||||||
tree.type.isRaw()) {
|
tree.type.isRaw()) {
|
||||||
log.warning(tree.pos(), "raw.class.use", tree.type, tree.type.tsym.type);
|
log.warning(tree.pos(), "raw.class.use", tree.type, tree.type.tsym.type);
|
||||||
|
@ -915,7 +916,7 @@ public class Check {
|
||||||
List<Type> actuals = tree.type.allparams();
|
List<Type> actuals = tree.type.allparams();
|
||||||
List<JCExpression> args = tree.arguments;
|
List<JCExpression> args = tree.arguments;
|
||||||
List<Type> forms = tree.type.tsym.type.getTypeArguments();
|
List<Type> forms = tree.type.tsym.type.getTypeArguments();
|
||||||
ListBuffer<TypeVar> tvars_buf = new ListBuffer<TypeVar>();
|
ListBuffer<Type> tvars_buf = new ListBuffer<Type>();
|
||||||
|
|
||||||
// For matching pairs of actual argument types `a' and
|
// For matching pairs of actual argument types `a' and
|
||||||
// formal type parameters with declared bound `b' ...
|
// formal type parameters with declared bound `b' ...
|
||||||
|
@ -946,12 +947,15 @@ public class Check {
|
||||||
}
|
}
|
||||||
|
|
||||||
args = tree.arguments;
|
args = tree.arguments;
|
||||||
List<TypeVar> tvars = tvars_buf.toList();
|
List<Type> tvars = tvars_buf.toList();
|
||||||
|
|
||||||
while (args.nonEmpty() && tvars.nonEmpty()) {
|
while (args.nonEmpty() && tvars.nonEmpty()) {
|
||||||
|
Type actual = types.subst(args.head.type,
|
||||||
|
tree.type.tsym.type.getTypeArguments(),
|
||||||
|
tvars_buf.toList());
|
||||||
checkExtends(args.head.pos(),
|
checkExtends(args.head.pos(),
|
||||||
args.head.type,
|
actual,
|
||||||
tvars.head);
|
(TypeVar)tvars.head);
|
||||||
args = args.tail;
|
args = args.tail;
|
||||||
tvars = tvars.tail;
|
tvars = tvars.tail;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ ifeq ($(OSNAME), Windows_NT)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
EXE_SUFFIX=.exe
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Root of this test area (important to use full paths in some places)
|
# Root of this test area (important to use full paths in some places)
|
||||||
|
@ -105,12 +106,13 @@ endif
|
||||||
# PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from
|
# PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from
|
||||||
# make/Makefile
|
# make/Makefile
|
||||||
# For langtools, this is a directory containing build and dist
|
# For langtools, this is a directory containing build and dist
|
||||||
# For a control build, this is build/$(PRODUCT)-$(ARCH)/j2sdk-image
|
# For a control build, this is build/$(PRODUCT)-$(ARCH)/XYZ-image
|
||||||
|
# (i.e, j2sdk-image or jdk-module-image)
|
||||||
ifdef PRODUCT_HOME
|
ifdef PRODUCT_HOME
|
||||||
ifeq ($(shell [ -r $(PRODUCT_HOME)/dist/lib/classes.jar ]; echo $$?),0)
|
ifeq ($(shell [ -r $(PRODUCT_HOME)/dist/lib/classes.jar ]; echo $$?),0)
|
||||||
TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar
|
TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell [ -r $(PRODUCT_HOME)/lib/tools.jar ]; echo $$?),0)
|
ifeq ($(shell [ -r $(PRODUCT_HOME)/bin/javac$(EXE_SUFFIX) ]; echo $$?),0)
|
||||||
TESTJAVA = $(PRODUCT_HOME)
|
TESTJAVA = $(PRODUCT_HOME)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -150,6 +152,16 @@ ifdef JCK_GROUP_SIZE
|
||||||
### -jtoptions:-Ejck.env.runtime.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE)
|
### -jtoptions:-Ejck.env.runtime.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Timeouts -- by default, increase test timeouts when running on JPRT
|
||||||
|
ifdef JPRT_JOB_ID
|
||||||
|
ifndef JTREG_TIMEOUT_FACTOR
|
||||||
|
JTREG_TIMEOUT_FACTOR = 3
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifdef JTREG_TIMEOUT_FACTOR
|
||||||
|
JTREG_OPTIONS += -timeoutFactor:$(JTREG_TIMEOUT_FACTOR)
|
||||||
|
endif
|
||||||
|
|
||||||
# Assertions: some tests show failures when assertions are enabled.
|
# Assertions: some tests show failures when assertions are enabled.
|
||||||
# Since javac is typically loaded via the bootclassloader (either via TESTJAVA
|
# Since javac is typically loaded via the bootclassloader (either via TESTJAVA
|
||||||
# or TESTBOOTCLASSPATH), you may need -esa to enable assertions in javac.
|
# or TESTBOOTCLASSPATH), you may need -esa to enable assertions in javac.
|
||||||
|
|
29
langtools/test/tools/javac/6948381/T6948381.java
Normal file
29
langtools/test/tools/javac/6948381/T6948381.java
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @bug 6948381
|
||||||
|
* @summary javac Null Pointer Exception in Types.makeCompoundType
|
||||||
|
* @compile npe/A.java npe/B.java
|
||||||
|
*/
|
28
langtools/test/tools/javac/6948381/npe/A.java
Normal file
28
langtools/test/tools/javac/6948381/npe/A.java
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package npe;
|
||||||
|
|
||||||
|
import npe.B.*;
|
||||||
|
|
||||||
|
public interface A {}
|
26
langtools/test/tools/javac/6948381/npe/B.java
Normal file
26
langtools/test/tools/javac/6948381/npe/B.java
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package npe;
|
||||||
|
|
||||||
|
public interface B<T extends A & java.io.Serializable> {}
|
21
langtools/test/tools/javac/generics/6946618/T6946618a.java
Normal file
21
langtools/test/tools/javac/generics/6946618/T6946618a.java
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 6946618
|
||||||
|
* @summary sqe test fails: javac/generics/NewOnTypeParm in pit jdk7 b91 in all platforms.
|
||||||
|
* @author mcimadamore
|
||||||
|
* @compile/fail/ref=T6946618a.out -XDrawDiagnostics T6946618a.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class T6946618a {
|
||||||
|
static class C<T> {
|
||||||
|
T makeT() {
|
||||||
|
return new T(); //error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class D<S> {
|
||||||
|
C<S> makeC() {
|
||||||
|
return new C<S>(); //ok
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
T6946618a.java:12:20: compiler.err.type.found.req: (compiler.misc.type.parameter: T), (compiler.misc.type.req.class)
|
||||||
|
1 error
|
21
langtools/test/tools/javac/generics/6946618/T6946618b.java
Normal file
21
langtools/test/tools/javac/generics/6946618/T6946618b.java
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 6946618
|
||||||
|
* @summary sqe test fails: javac/generics/NewOnTypeParm in pit jdk7 b91 in all platforms.
|
||||||
|
* @author mcimadamore
|
||||||
|
* @compile/fail/ref=T6946618b.out -XDrawDiagnostics T6946618b.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class T6946618b {
|
||||||
|
static class C<T> {
|
||||||
|
T makeT() {
|
||||||
|
return new T<>(); //error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class D<S> {
|
||||||
|
C<S> makeC() {
|
||||||
|
return new C<>(); //ok
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
T6946618b.java:12:20: compiler.err.type.found.req: (compiler.misc.type.parameter: T), (compiler.misc.type.req.class)
|
||||||
|
1 error
|
17
langtools/test/tools/javac/generics/6946618/T6946618c.java
Normal file
17
langtools/test/tools/javac/generics/6946618/T6946618c.java
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 6946618
|
||||||
|
* @summary sqe test fails: javac/generics/NewOnTypeParm in pit jdk7 b91 in all platforms.
|
||||||
|
* @author mcimadamore
|
||||||
|
* @compile/fail/ref=T6946618c.out -XDrawDiagnostics T6946618c.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class T6946618c {
|
||||||
|
static class C<T> { }
|
||||||
|
|
||||||
|
void test() {
|
||||||
|
C<?> c1 = new C<? extends String>();
|
||||||
|
C<?> c2 = new C<? super String>();
|
||||||
|
C<?> c3 = new C<?>();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
T6946618c.java:13:24: compiler.err.type.found.req: ? extends java.lang.String, class or interface without bounds
|
||||||
|
T6946618c.java:14:24: compiler.err.type.found.req: ? super java.lang.String, class or interface without bounds
|
||||||
|
T6946618c.java:15:24: compiler.err.type.found.req: ?, class or interface without bounds
|
||||||
|
3 errors
|
36
langtools/test/tools/javac/generics/diamond/T6951833.java
Normal file
36
langtools/test/tools/javac/generics/diamond/T6951833.java
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 6951833
|
||||||
|
*
|
||||||
|
* @summary latest diamond implementation generates spurious raw type warnings
|
||||||
|
* @author mcimadamore
|
||||||
|
* @compile -Xlint:rawtypes -Werror T6951833.java
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class T6951833<X> {
|
||||||
|
T6951833<String> bug = new T6951833<>();
|
||||||
|
}
|
40
langtools/test/tools/javac/generics/typevars/T6880344.java
Normal file
40
langtools/test/tools/javac/generics/typevars/T6880344.java
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2009 Sun Microsystems, Inc. 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 6880344
|
||||||
|
* @summary Recursive type parameters do not compile
|
||||||
|
* @author mcimadamore
|
||||||
|
* @compile T6880344.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class T6880344 {
|
||||||
|
static class A<X1 extends G<X1>> {
|
||||||
|
public A<N<X1>> xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class N<X2 extends G<X2>> implements G<N<X2>> { }
|
||||||
|
|
||||||
|
interface G<X3 extends G<X3>> { }
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue