Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
676dd771
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看板
提交
676dd771
编写于
8月 11, 2009
作者:
M
mcimadamore
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6199153: Generic throws and overriding
Summary: javac incorrectly rejects an uchecked overriding Reviewed-by: jjg
上级
d6003437
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
84 addition
and
19 deletion
+84
-19
src/share/classes/com/sun/tools/javac/comp/Check.java
src/share/classes/com/sun/tools/javac/comp/Check.java
+18
-11
src/share/classes/com/sun/tools/javac/resources/compiler.properties
...classes/com/sun/tools/javac/resources/compiler.properties
+18
-8
test/tools/javac/OverrideChecks/6199153/T6199153.java
test/tools/javac/OverrideChecks/6199153/T6199153.java
+44
-0
test/tools/javac/OverrideChecks/6199153/T6199153.out
test/tools/javac/OverrideChecks/6199153/T6199153.out
+4
-0
未找到文件。
src/share/classes/com/sun/tools/javac/comp/Check.java
浏览文件 @
676dd771
...
...
@@ -1043,7 +1043,7 @@ public class Check {
* @param thrown The list of thrown exceptions.
* @param handled The list of handled exceptions.
*/
List
<
Type
>
un
H
andled
(
List
<
Type
>
thrown
,
List
<
Type
>
handled
)
{
List
<
Type
>
un
h
andled
(
List
<
Type
>
thrown
,
List
<
Type
>
handled
)
{
List
<
Type
>
unhandled
=
List
.
nil
();
for
(
List
<
Type
>
l
=
thrown
;
l
.
nonEmpty
();
l
=
l
.
tail
)
if
(!
isHandled
(
l
.
head
,
handled
))
unhandled
=
unhandled
.
prepend
(
l
.
head
);
...
...
@@ -1200,29 +1200,36 @@ public class Check {
m
.
owner
.
isSubClass
(
other
.
owner
,
types
))
{
// allow limited interoperability with covariant returns
}
else
{
typeE
rror
(
TreeInfo
.
diagnosticPositionFor
(
m
,
tree
),
diags
.
fragment
(
"override.incompatible.ret"
,
cannotOverride
(
m
,
other
)
),
log
.
e
rror
(
TreeInfo
.
diagnosticPositionFor
(
m
,
tree
),
"override.incompatible.ret"
,
cannotOverride
(
m
,
other
),
mtres
,
otres
);
return
;
}
}
else
if
(
overrideWarner
.
warned
)
{
warnUnchecked
(
TreeInfo
.
diagnosticPositionFor
(
m
,
tree
),
"prob.found.req"
,
diags
.
fragment
(
"override.unchecked.ret"
,
uncheckedOverrides
(
m
,
other
)),
mtres
,
otres
);
"override.unchecked.ret"
,
uncheckedOverrides
(
m
,
other
),
mtres
,
otres
);
}
// Error if overriding method throws an exception not reported
// by overridden method.
List
<
Type
>
otthrown
=
types
.
subst
(
ot
.
getThrownTypes
(),
otvars
,
mtvars
);
List
<
Type
>
unhandled
=
unHandled
(
mt
.
getThrownTypes
(),
otthrown
);
if
(
unhandled
.
nonEmpty
())
{
List
<
Type
>
unhandledErased
=
unhandled
(
mt
.
getThrownTypes
(),
types
.
erasure
(
otthrown
));
List
<
Type
>
unhandledUnerased
=
unhandled
(
mt
.
getThrownTypes
(),
otthrown
);
if
(
unhandledErased
.
nonEmpty
())
{
log
.
error
(
TreeInfo
.
diagnosticPositionFor
(
m
,
tree
),
"override.meth.doesnt.throw"
,
cannotOverride
(
m
,
other
),
unhandled
.
head
);
unhandledUnerased
.
head
);
return
;
}
else
if
(
unhandledUnerased
.
nonEmpty
())
{
warnUnchecked
(
TreeInfo
.
diagnosticPositionFor
(
m
,
tree
),
"override.unchecked.thrown"
,
cannotOverride
(
m
,
other
),
unhandledUnerased
.
head
);
return
;
}
...
...
src/share/classes/com/sun/tools/javac/resources/compiler.properties
浏览文件 @
676dd771
...
...
@@ -1093,23 +1093,33 @@ compiler.misc.no.args=\
no arguments
compiler.err.override.static
=
\
{0}; overriding method is static
{0}
\n\
overriding method is static
compiler.err.override.meth
=
\
{0}; overridden method is {1}
{0}
\n\
overridden method is {1}
compiler.err.override.meth.doesnt.throw
=
\
{0}; overridden method does not throw {1}
{0}
\n\
overridden method does not throw {1}
# In the following string {1} is a space separated list of Java Keywords, as
# they would have been declared in the source code
compiler.err.override.weaker.access
=
\
{0}; attempting to assign weaker access privileges; was {1}
{0}
\n\
attempting to assign weaker access privileges; was {1}
compiler.misc.override.incompatible.ret
=
\
{0}; attempting to use incompatible return type
compiler.err.override.incompatible.ret
=
\
{0}
\n\
return type {1} is not compatible with {2}
compiler.misc.override.unchecked.ret
=
\
{0}; return type requires unchecked conversion
compiler.warn.override.unchecked.ret
=
\
[unchecked] {0}
\n\
return type requires unchecked conversion from {1} to {2}
compiler.warn.override.unchecked.thrown
=
\
[unchecked] {0}
\n\
overridden method does not throw {1}
## The following are all possible strings for the first argument ({0}) of the
## above strings.
...
...
test/tools/javac/OverrideChecks/6199153/T6199153.java
0 → 100644
浏览文件 @
676dd771
/*
* 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 6199153
* @summary Generic throws and overriding
* @author mcimadamore
* @compile/fail/ref=T6199153.out -Xlint -Werror -XDrawDiagnostics T6199153.java
*/
import
java.io.IOException
;
class
T6199153
{
static
class
A
{
public
<
T
extends
IOException
>
void
m
()
throws
T
{}
}
static
class
B
extends
A
{
public
void
m
()
throws
IOException
{}
}
}
test/tools/javac/OverrideChecks/6199153/T6199153.out
0 → 100644
浏览文件 @
676dd771
T6199153.java:41:21: compiler.warn.override.unchecked.thrown: (compiler.misc.cant.override: m(), T6199153.B, <T>m(), T6199153.A), java.io.IOException
- compiler.err.warnings.and.werror
1 error
1 warning
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录