Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
889ba5f3
D
dragonwell8_langtools
项目概览
openanolis
/
dragonwell8_langtools
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_langtools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
889ba5f3
编写于
2月 06, 2014
作者:
V
vromero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8029240: Default methods not always visible under -source 7
Reviewed-by: jjg
上级
54ba9c01
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
178 addition
and
18 deletion
+178
-18
src/share/classes/com/sun/tools/javac/code/Source.java
src/share/classes/com/sun/tools/javac/code/Source.java
+4
-1
src/share/classes/com/sun/tools/javac/code/Types.java
src/share/classes/com/sun/tools/javac/code/Types.java
+1
-3
src/share/classes/com/sun/tools/javac/comp/Resolve.java
src/share/classes/com/sun/tools/javac/comp/Resolve.java
+6
-6
src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
+1
-6
test/tools/javac/T8029240/DefaultMethodsNotVisibileForSource7Test.java
...vac/T8029240/DefaultMethodsNotVisibileForSource7Test.java
+164
-0
test/tools/javac/scope/7046348/EagerInterfaceCompletionTest.java
...ols/javac/scope/7046348/EagerInterfaceCompletionTest.java
+2
-2
未找到文件。
src/share/classes/com/sun/tools/javac/code/Source.java
浏览文件 @
889ba5f3
/*
* Copyright (c) 2002, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 201
4
, 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
...
...
@@ -203,6 +203,9 @@ public enum Source {
public
boolean
allowDefaultMethods
()
{
return
compareTo
(
JDK1_8
)
>=
0
;
}
public
boolean
allowDefaultMethodsResolution
()
{
return
compareTo
(
JDK1_7
)
>=
0
;
}
public
boolean
allowStaticInterfaceMethods
()
{
return
compareTo
(
JDK1_8
)
>=
0
;
}
...
...
src/share/classes/com/sun/tools/javac/code/Types.java
浏览文件 @
889ba5f3
/*
* Copyright (c) 2003, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
4
, 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
...
...
@@ -84,7 +84,6 @@ public class Types {
final
boolean
allowBoxing
;
final
boolean
allowCovariantReturns
;
final
boolean
allowObjectToPrimitiveCast
;
final
boolean
allowDefaultMethods
;
final
ClassReader
reader
;
final
Check
chk
;
final
Enter
enter
;
...
...
@@ -111,7 +110,6 @@ public class Types {
allowBoxing
=
source
.
allowBoxing
();
allowCovariantReturns
=
source
.
allowCovariantReturns
();
allowObjectToPrimitiveCast
=
source
.
allowObjectToPrimitiveCast
();
allowDefaultMethods
=
source
.
allowDefaultMethods
();
reader
=
ClassReader
.
instance
(
context
);
chk
=
Check
.
instance
(
context
);
enter
=
Enter
.
instance
(
context
);
...
...
src/share/classes/com/sun/tools/javac/comp/Resolve.java
浏览文件 @
889ba5f3
/*
* Copyright (c) 1999, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
4
, 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
...
...
@@ -95,7 +95,7 @@ public class Resolve {
public
final
boolean
boxingEnabled
;
// = source.allowBoxing();
public
final
boolean
varargsEnabled
;
// = source.allowVarargs();
public
final
boolean
allowMethodHandles
;
public
final
boolean
allowDefaultMethods
;
public
final
boolean
allowDefaultMethods
Resolution
;
public
final
boolean
allowStructuralMostSpecific
;
private
final
boolean
debugResolve
;
private
final
boolean
compactMethodDiags
;
...
...
@@ -137,7 +137,7 @@ public class Resolve {
verboseResolutionMode
=
VerboseResolutionMode
.
getVerboseResolutionMode
(
options
);
Target
target
=
Target
.
instance
(
context
);
allowMethodHandles
=
target
.
hasMethodHandles
();
allowDefaultMethods
=
source
.
allowDefaultMethods
();
allowDefaultMethods
Resolution
=
source
.
allowDefaultMethodsResolution
();
allowStructuralMostSpecific
=
source
.
allowStructuralMostSpecific
();
polymorphicSignatureScope
=
new
Scope
(
syms
.
noSymbol
);
...
...
@@ -1681,7 +1681,7 @@ public class Resolve {
bestSoFar
:
methodNotFound
;
for
(
InterfaceLookupPhase
iphase2
:
InterfaceLookupPhase
.
values
())
{
if
(
iphase2
==
InterfaceLookupPhase
.
DEFAULT_OK
&&
!
allowDefaultMethods
)
break
;
if
(
iphase2
==
InterfaceLookupPhase
.
DEFAULT_OK
&&
!
allowDefaultMethods
Resolution
)
break
;
//keep searching for abstract methods
for
(
Type
itype
:
itypes
[
iphase2
.
ordinal
()])
{
if
(!
itype
.
isInterface
())
continue
;
//skip j.l.Object (included by Types.closure())
...
...
@@ -1714,7 +1714,7 @@ public class Resolve {
//from superinterfaces)
if
((
s
.
flags
()
&
(
ABSTRACT
|
INTERFACE
|
ENUM
))
!=
0
)
{
return
this
;
}
else
if
(
rs
.
allowDefaultMethods
)
{
}
else
if
(
rs
.
allowDefaultMethods
Resolution
)
{
return
DEFAULT_OK
;
}
else
{
return
null
;
...
...
@@ -3341,7 +3341,7 @@ public class Resolve {
if
((
env1
.
enclClass
.
sym
.
flags
()
&
STATIC
)
!=
0
)
staticOnly
=
true
;
env1
=
env1
.
outer
;
}
if
(
allowDefaultMethods
&&
c
.
isInterface
()
&&
if
(
allowDefaultMethods
Resolution
&&
c
.
isInterface
()
&&
name
==
names
.
_super
&&
!
isStatic
(
env
)
&&
types
.
isDirectSuperInterface
(
c
,
env
.
enclClass
.
sym
))
{
//this might be a default super call if one of the superinterfaces is 'c'
...
...
src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
浏览文件 @
889ba5f3
/*
* Copyright (c) 1999, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
4
, 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
...
...
@@ -116,10 +116,6 @@ public class ClassReader {
*/
boolean
lintClassfile
;
/** Switch: allow default methods
*/
boolean
allowDefaultMethods
;
/** Switch: preserve parameter names from the variable table.
*/
public
boolean
saveParameterNames
;
...
...
@@ -307,7 +303,6 @@ public class ClassReader {
allowVarargs
=
source
.
allowVarargs
();
allowAnnotations
=
source
.
allowAnnotations
();
allowSimplifiedVarargs
=
source
.
allowSimplifiedVarargs
();
allowDefaultMethods
=
source
.
allowDefaultMethods
();
saveParameterNames
=
options
.
isSet
(
"save-parameter-names"
);
cacheCompletionFailure
=
options
.
isUnset
(
"dev"
);
...
...
test/tools/javac/T8029240/DefaultMethodsNotVisibileForSource7Test.java
0 → 100644
浏览文件 @
889ba5f3
/*
* Copyright (c) 2014, 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
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8029240
* @summary Default methods not always visible under -source 7
* @library /tools/javac/lib
* @build ToolBox
* @run main DefaultMethodsNotVisibileForSource7Test
*/
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
public
class
DefaultMethodsNotVisibileForSource7Test
{
// common definitions
// this one should be compiled with source 8, the rest with source 7
static
final
String
ISrc
=
"interface I {\n"
+
" default void m() {}\n"
+
"}"
;
static
final
String
JSrc
=
"interface J extends I {}"
;
static
final
String
ASrc
=
"abstract class A implements I {}"
;
static
final
String
BSrc
=
"class B implements I {}"
;
// test legacy implementations
static
final
String
C1Src
=
"class C1 implements I {\n"
+
" @Override public void m() {}\n"
+
"}"
;
static
final
String
C2Src
=
"class C2 implements J {\n"
+
" @Override public void m() {}\n"
+
"}"
;
static
final
String
C3Src
=
"class C3 extends A {\n"
+
" @Override public void m() {}\n"
+
"}"
;
static
final
String
C4Src
=
"class C4 extends B {\n"
+
" @Override public void m() {}\n"
+
"}"
;
//test legacy invocations
static
final
String
LegacyInvocationSrc
=
"class LegacyInvocation {\n"
+
" public static void test(I i, J j, A a, B b) {\n"
+
" i.m();\n"
+
" j.m();\n"
+
" a.m();\n"
+
" b.m();\n"
+
" }\n"
+
"}"
;
//test case super invocations
static
final
String
SubASrc
=
"class SubA extends A {\n"
+
" public void test() {\n"
+
" super.m();\n"
+
" }\n"
+
"}"
;
static
final
String
SubBSrc
=
"class SubB extends B {\n"
+
" public void test() {\n"
+
" super.m();\n"
+
" }\n"
+
"}"
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
DefaultMethodsNotVisibileForSource7Test
().
run
();
}
void
run
()
throws
Exception
{
testsPreparation
();
testLegacyImplementations
();
testLegacyInvocations
();
testSuperInvocations
();
}
void
testsPreparation
()
throws
Exception
{
Files
.
createDirectory
(
Paths
.
get
(
"out"
));
/* as an extra check let's make sure that interface 'I' can't be compiled
* with source 7
*/
ToolBox
.
JavaToolArgs
javacArgs
=
new
ToolBox
.
JavaToolArgs
(
ToolBox
.
Expect
.
FAIL
)
.
setOptions
(
"-d"
,
"out"
,
"-source"
,
"7"
)
.
setSources
(
ISrc
);
ToolBox
.
javac
(
javacArgs
);
//but it should compile with source >= 8
javacArgs
=
new
ToolBox
.
JavaToolArgs
()
.
setOptions
(
"-d"
,
"out"
)
.
setSources
(
ISrc
);
ToolBox
.
javac
(
javacArgs
);
javacArgs
=
new
ToolBox
.
JavaToolArgs
()
.
setOptions
(
"-cp"
,
"out"
,
"-d"
,
"out"
,
"-source"
,
"7"
)
.
setSources
(
JSrc
,
ASrc
,
BSrc
);
ToolBox
.
javac
(
javacArgs
);
}
void
testLegacyImplementations
()
throws
Exception
{
//compile C1-4
ToolBox
.
JavaToolArgs
javacArgs
=
new
ToolBox
.
JavaToolArgs
()
.
setOptions
(
"-cp"
,
"out"
,
"-d"
,
"out"
,
"-source"
,
"7"
)
.
setSources
(
C1Src
,
C2Src
,
C3Src
,
C4Src
);
ToolBox
.
javac
(
javacArgs
);
}
void
testLegacyInvocations
()
throws
Exception
{
//compile LegacyInvocation
ToolBox
.
JavaToolArgs
javacArgs
=
new
ToolBox
.
JavaToolArgs
()
.
setOptions
(
"-cp"
,
"out"
,
"-d"
,
"out"
,
"-source"
,
"7"
)
.
setSources
(
LegacyInvocationSrc
);
ToolBox
.
javac
(
javacArgs
);
}
void
testSuperInvocations
()
throws
Exception
{
//compile SubA, SubB
ToolBox
.
JavaToolArgs
javacArgs
=
new
ToolBox
.
JavaToolArgs
()
.
setOptions
(
"-cp"
,
"out"
,
"-d"
,
"out"
,
"-source"
,
"7"
)
.
setSources
(
SubASrc
,
SubBSrc
);
ToolBox
.
javac
(
javacArgs
);
}
}
test/tools/javac/scope/7046348/EagerInterfaceCompletionTest.java
浏览文件 @
889ba5f3
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011,
2014,
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
...
...
@@ -181,7 +181,7 @@ public class EagerInterfaceCompletionTest {
case
FIELD:
case
SUPER:
return
true
;
case
METHOD:
return
hk
!=
HierarchyKind
.
INTERFACE
||
ak
==
ActionKind
.
REMOVE_B
||
(
hk
==
HierarchyKind
.
INTERFACE
&&
ak
==
ActionKind
.
REMOVE_A
&&
vk
==
VersionKind
.
LAMBDA
);
(
hk
==
HierarchyKind
.
INTERFACE
&&
ak
==
ActionKind
.
REMOVE_A
);
default
:
throw
new
AssertionError
(
"Unexpected test kind "
+
this
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录