Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
cd92e4c6
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看板
提交
cd92e4c6
编写于
9月 03, 2010
作者:
S
sundar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6956462: AssertionError exception thrown in the Compiler Tree API in JDK 7.
Reviewed-by: jjg
上级
f35cd3f0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
168 addition
and
0 deletion
+168
-0
src/share/classes/com/sun/tools/javac/comp/Attr.java
src/share/classes/com/sun/tools/javac/comp/Attr.java
+12
-0
test/tools/javac/T6956462/T6956462.java
test/tools/javac/T6956462/T6956462.java
+126
-0
test/tools/javac/T6956462/TestClass.java
test/tools/javac/T6956462/TestClass.java
+30
-0
未找到文件。
src/share/classes/com/sun/tools/javac/comp/Attr.java
浏览文件 @
cd92e4c6
...
...
@@ -328,6 +328,12 @@ public class Attr extends JCTree.Visitor {
attribExpr
(
expr
,
env
);
}
catch
(
BreakAttr
b
)
{
return
b
.
env
;
}
catch
(
AssertionError
ae
)
{
if
(
ae
.
getCause
()
instanceof
BreakAttr
)
{
return
((
BreakAttr
)(
ae
.
getCause
())).
env
;
}
else
{
throw
ae
;
}
}
finally
{
breakTree
=
null
;
log
.
useSource
(
prev
);
...
...
@@ -342,6 +348,12 @@ public class Attr extends JCTree.Visitor {
attribStat
(
stmt
,
env
);
}
catch
(
BreakAttr
b
)
{
return
b
.
env
;
}
catch
(
AssertionError
ae
)
{
if
(
ae
.
getCause
()
instanceof
BreakAttr
)
{
return
((
BreakAttr
)(
ae
.
getCause
())).
env
;
}
else
{
throw
ae
;
}
}
finally
{
breakTree
=
null
;
log
.
useSource
(
prev
);
...
...
test/tools/javac/T6956462/T6956462.java
0 → 100644
浏览文件 @
cd92e4c6
/*
* Copyright (c) 2010, 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 6956462
* @summary AssertionError exception throws in the Compiler Tree API in JDK 7.
*
* @build TestClass T6956462
* @run main T6956462
*/
import
java.io.*
;
import
java.net.URISyntaxException
;
import
java.util.*
;
import
javax.tools.*
;
import
javax.tools.JavaCompiler.CompilationTask
;
import
com.sun.source.tree.*
;
import
com.sun.source.util.*
;
public
class
T6956462
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
JavaCompiler
compiler
=
ToolProvider
.
getSystemJavaCompiler
();
if
(
compiler
==
null
)
{
throw
new
RuntimeException
(
"can't get javax.tools.JavaCompiler!"
);
}
StandardJavaFileManager
fm
=
compiler
.
getStandardFileManager
(
null
,
null
,
null
);
List
<
File
>
files
=
new
ArrayList
<
File
>();
files
.
add
(
new
File
(
T6956462
.
class
.
getResource
(
"TestClass.java"
).
toURI
()));
final
CompilationTask
task
=
compiler
.
getTask
(
null
,
fm
,
null
,
null
,
null
,
fm
.
getJavaFileObjectsFromFiles
(
files
));
JavacTask
javacTask
=
(
JavacTask
)
task
;
for
(
CompilationUnitTree
cu
:
javacTask
.
parse
())
{
cu
.
accept
(
new
MyVisitor
(
javacTask
),
null
);
}
}
private
static
class
MyVisitor
extends
SimpleTreeVisitor
<
Tree
,
Void
>
{
private
final
Trees
trees
;
private
CompilationUnitTree
file
;
private
MyVisitor
(
JavacTask
javac
)
{
this
.
trees
=
Trees
.
instance
(
javac
);
}
@Override
public
Tree
visitCompilationUnit
(
CompilationUnitTree
file
,
Void
v
)
{
this
.
file
=
file
;
for
(
Tree
typeDecl
:
file
.
getTypeDecls
())
{
typeDecl
.
accept
(
this
,
v
);
}
return
null
;
}
@Override
public
Tree
visitImport
(
ImportTree
imp
,
Void
v
)
{
return
null
;
}
@Override
public
Tree
visitMethodInvocation
(
MethodInvocationTree
invoke
,
Void
v
)
{
invoke
.
getMethodSelect
().
accept
(
this
,
v
);
return
null
;
}
@Override
public
Tree
visitBlock
(
BlockTree
block
,
Void
v
)
{
for
(
StatementTree
stat
:
block
.
getStatements
())
{
stat
.
accept
(
this
,
v
);
}
return
null
;
}
@Override
public
Tree
visitClass
(
ClassTree
clazz
,
Void
v
)
{
for
(
Tree
member
:
clazz
.
getMembers
())
{
member
.
accept
(
this
,
v
);
}
return
null
;
}
@Override
public
Tree
visitIdentifier
(
IdentifierTree
ident
,
Void
v
)
{
trees
.
getScope
(
trees
.
getPath
(
file
,
ident
));
return
null
;
}
@Override
public
Tree
visitMethod
(
MethodTree
method
,
Void
v
)
{
method
.
getBody
().
accept
(
this
,
v
);
return
null
;
}
@Override
public
Tree
visitMemberSelect
(
MemberSelectTree
select
,
Void
v
)
{
select
.
getExpression
().
accept
(
this
,
v
);
return
null
;
}
@Override
public
Tree
visitVariable
(
VariableTree
var
,
Void
v
)
{
var
.
getInitializer
().
accept
(
this
,
v
);
return
null
;
}
}
}
test/tools/javac/T6956462/TestClass.java
0 → 100644
浏览文件 @
cd92e4c6
/*
* Copyright (c) 2010, 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.
*/
import
java.io.PrintStream
;
abstract
class
TestClass
{
private
void
test
()
{
final
PrintStream
out
=
System
.
out
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录