Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
4f22f5b0
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看板
提交
4f22f5b0
编写于
11月 05, 2012
作者:
V
vromero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8000484: Bad error recovery when 'catch' without 'try' is found
Reviewed-by: jjg, mcimadamore
上级
5b1ab0e3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
50 addition
and
6 deletion
+50
-6
src/share/classes/com/sun/tools/javac/parser/JavacParser.java
...share/classes/com/sun/tools/javac/parser/JavacParser.java
+23
-3
test/tools/javac/diags/examples/CatchWithoutTry.java
test/tools/javac/diags/examples/CatchWithoutTry.java
+0
-3
test/tools/javac/incompleteStatements/T8000484.java
test/tools/javac/incompleteStatements/T8000484.java
+17
-0
test/tools/javac/incompleteStatements/T8000484.out
test/tools/javac/incompleteStatements/T8000484.out
+10
-0
未找到文件。
src/share/classes/com/sun/tools/javac/parser/JavacParser.java
浏览文件 @
4f22f5b0
...
...
@@ -88,6 +88,15 @@ public class JavacParser implements Parser {
/** End position mappings container */
private
final
AbstractEndPosTable
endPosTable
;
interface
ErrorRecoveryAction
{
JCTree
doRecover
(
JavacParser
parser
);
}
enum
BasicErrorRecoveryAction
implements
ErrorRecoveryAction
{
BLOCK_STMT
{
public
JCTree
doRecover
(
JavacParser
parser
)
{
return
parser
.
parseStatementAsBlock
();
}},
CATCH_CLAUSE
{
public
JCTree
doRecover
(
JavacParser
parser
)
{
return
parser
.
catchClause
();
}}
}
/** Construct a parser from a given scanner, tree factory and log.
*/
protected
JavacParser
(
ParserFactory
fac
,
...
...
@@ -2102,11 +2111,15 @@ public class JavacParser implements Parser {
nextToken
();
return
toP
(
F
.
at
(
pos
).
Skip
());
case
ELSE:
return
toP
(
F
.
Exec
(
syntaxError
(
"else.without.if"
)));
int
elsePos
=
token
.
pos
;
nextToken
();
return
doRecover
(
elsePos
,
BasicErrorRecoveryAction
.
BLOCK_STMT
,
"else.without.if"
);
case
FINALLY:
return
toP
(
F
.
Exec
(
syntaxError
(
"finally.without.try"
)));
int
finallyPos
=
token
.
pos
;
nextToken
();
return
doRecover
(
finallyPos
,
BasicErrorRecoveryAction
.
BLOCK_STMT
,
"finally.without.try"
);
case
CATCH:
return
toP
(
F
.
Exec
(
syntaxError
(
"catch.without.try"
))
);
return
doRecover
(
token
.
pos
,
BasicErrorRecoveryAction
.
CATCH_CLAUSE
,
"catch.without.try"
);
case
ASSERT:
{
if
(
allowAsserts
&&
token
.
kind
==
ASSERT
)
{
nextToken
();
...
...
@@ -2139,6 +2152,13 @@ public class JavacParser implements Parser {
}
}
private
JCStatement
doRecover
(
int
startPos
,
ErrorRecoveryAction
action
,
String
key
)
{
int
errPos
=
S
.
errPos
();
JCTree
stm
=
action
.
doRecover
(
this
);
S
.
errPos
(
errPos
);
return
toP
(
F
.
Exec
(
syntaxError
(
startPos
,
List
.<
JCTree
>
of
(
stm
),
key
)));
}
/** CatchClause = CATCH "(" FormalParameter ")" Block
*/
protected
JCCatch
catchClause
()
{
...
...
test/tools/javac/diags/examples/CatchWithoutTry.java
浏览文件 @
4f22f5b0
...
...
@@ -22,9 +22,6 @@
*/
// key: compiler.err.catch.without.try
// key: compiler.err.expected
// key: compiler.err.not.stmt
// key: compiler.err.lambda.not.supported.in.source
class
CatchWithoutTry
{
void
m
()
{
...
...
test/tools/javac/incompleteStatements/T8000484.java
0 → 100644
浏览文件 @
4f22f5b0
/*
* @test /nodynamiccopyright/
* @bug 8000484
* @summary Bad error recovery when 'catch' without 'try' is found
* @compile/fail/ref=T8000484.out -XDrawDiagnostics T8000484.java
*/
public
class
T8000484
{
void
m
()
{
catch
(
Exception
e
){}
else
{}
finally
{}
catch
(
Exception
e
)
{
catch
(
Exception
e
){}}
else
{
else
{}}
finally
{
finally
{}}
}
}
test/tools/javac/incompleteStatements/T8000484.out
0 → 100644
浏览文件 @
4f22f5b0
T8000484.java:10:9: compiler.err.catch.without.try
T8000484.java:11:9: compiler.err.else.without.if
T8000484.java:12:9: compiler.err.finally.without.try
T8000484.java:13:30: compiler.err.catch.without.try
T8000484.java:13:9: compiler.err.catch.without.try
T8000484.java:14:14: compiler.err.else.without.if
T8000484.java:14:9: compiler.err.else.without.if
T8000484.java:15:17: compiler.err.finally.without.try
T8000484.java:15:9: compiler.err.finally.without.try
9 errors
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录