Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
e3969209
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看板
提交
e3969209
编写于
11月 13, 2013
作者:
S
sogoel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8025113: Convert 7 tools TryWithResources tests to jtreg format
Reviewed-by: darcy, jjg
上级
0998b4f0
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
547 addition
and
0 deletion
+547
-0
test/tools/javac/TryWithResources/ResDeclOutsideTry.java
test/tools/javac/TryWithResources/ResDeclOutsideTry.java
+18
-0
test/tools/javac/TryWithResources/ResDeclOutsideTry.out
test/tools/javac/TryWithResources/ResDeclOutsideTry.out
+3
-0
test/tools/javac/TryWithResources/ResInNestedExpr.java
test/tools/javac/TryWithResources/ResInNestedExpr.java
+195
-0
test/tools/javac/TryWithResources/ResourceNameConflict.java
test/tools/javac/TryWithResources/ResourceNameConflict.java
+36
-0
test/tools/javac/TryWithResources/ResourceNameConflict.out
test/tools/javac/TryWithResources/ResourceNameConflict.out
+3
-0
test/tools/javac/TryWithResources/ResourceRedecl.java
test/tools/javac/TryWithResources/ResourceRedecl.java
+37
-0
test/tools/javac/TryWithResources/ResourceRedecl.out
test/tools/javac/TryWithResources/ResourceRedecl.out
+7
-0
test/tools/javac/TryWithResources/ResourceShadow.java
test/tools/javac/TryWithResources/ResourceShadow.java
+119
-0
test/tools/javac/TryWithResources/TestTwr09.java
test/tools/javac/TryWithResources/TestTwr09.java
+129
-0
未找到文件。
test/tools/javac/TryWithResources/ResDeclOutsideTry.java
0 → 100644
浏览文件 @
e3969209
/*
* @test /nodynamiccopyright/
* @bug 8025113
* @author sogoel
* @summary Resources cannot be declared outside t-w-r block
* @compile/fail/ref=ResDeclOutsideTry.out -XDrawDiagnostics ResDeclOutsideTry.java
*/
public
class
ResDeclOutsideTry
implements
AutoCloseable
{
ResDeclOutsideTry
tr1
;
ResDeclOutsideTry
tr2
=
new
ResDeclOutsideTry
();
String
test1
()
{
try
(
tr1
=
new
ResDeclOutsideTry
();
tr2
;)
{
}
}
}
test/tools/javac/TryWithResources/ResDeclOutsideTry.out
0 → 100644
浏览文件 @
e3969209
ResDeclOutsideTry.java:14:17: compiler.err.expected: token.identifier
ResDeclOutsideTry.java:14:48: compiler.err.expected: token.identifier
2 errors
test/tools/javac/TryWithResources/ResInNestedExpr.java
0 → 100644
浏览文件 @
e3969209
/*
* Copyright (c) 2010, 2013, 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 8025113
* @author sogoel
* @summary Resource creation in nested expressions
*/
/**
* This test checks for resource creation in nested expressions.
* test1() - Create 3 resource in nested new expressions, style 1
* test2() - Create 3 resource in nested new expressions, style 2
* test3() - Create 4 resources with resources as parameters: new expression; typeid & new expression
*/
public
class
ResInNestedExpr
{
static
final
int
expected
=
5
;
static
int
closed
=
0
;
static
void
closing
(
String
clazz
)
{
closed
++;
}
static
void
checkClosedCount
()
{
if
(
expected
!=
closed
)
{
throw
new
RuntimeException
(
"Did not find enough closed resources."
+
"Expected "
+
expected
+
", but found "
+
closed
);
}
}
/**
* The "expected output" is each class name gotten with getSimpleName() to unclutter things.
* Each test method returns a classname of the resource and that is compared with
* values in this array.
*/
static
String
[]
expectedOutput
=
{
"aResource::bResource::cResource"
,
//test1
"aResource::bResource::cResource&aResource::cResource"
,
//test3
"aResource::bResource::cResource&aResource::cResource"
};
//test2
static
void
compare
(
String
s1
,
String
s2
)
{
if
(
s1
.
compareTo
(
s2
)
!=
0
)
{
throw
new
RuntimeException
(
s1
+
"!="
+
s2
);
}
}
String
test1
()
{
String
ret
=
null
;
try
(
bResource
br
=
new
bResource
(
new
cResource
());
aResource
ar
=
new
aResource
(
br
))
{
ret
=
ar
.
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getC
().
getClass
().
getSimpleName
();
}
return
ret
;
}
String
test2
()
{
String
ret
=
null
;
try
(
aResource
ar
=
new
aResource
(
new
bResource
(
new
cResource
()),
new
cResource
()))
{
String
abc
=
ar
.
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getC
().
getClass
().
getSimpleName
();
String
ac
=
ar
.
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getC
().
getClass
().
getSimpleName
();
ret
=
abc
+
"&"
+
ac
;
}
return
ret
;
}
String
test3
()
{
String
ret
=
null
;
try
(
bResource
br
=
new
bResource
(
new
cResource
());
aResource
ar
=
new
aResource
(
br
,
new
cResource
()))
{
String
abc
=
ar
.
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getB
().
getC
().
getClass
().
getSimpleName
();
String
ac
=
ar
.
getClass
().
getSimpleName
()
+
"::"
+
ar
.
getC
().
getClass
().
getSimpleName
();
ret
=
abc
+
"&"
+
ac
;
}
return
ret
;
}
public
static
void
main
(
String
...
args
)
{
ResInNestedExpr
t
=
new
ResInNestedExpr
();
int
eo
=
0
;
compare
(
expectedOutput
[
eo
++],
t
.
test1
());
compare
(
expectedOutput
[
eo
++],
t
.
test3
());
compare
(
expectedOutput
[
eo
++],
t
.
test2
());
ResInNestedExpr
.
checkClosedCount
();
}
/**
* A resource to implement AutoCloseable
* Contains two other resources as data items.
*/
static
class
aResource
implements
AutoCloseable
{
bResource
bR
;
cResource
cR
;
public
aResource
()
{
bR
=
null
;
cR
=
null
;
}
public
aResource
(
bResource
br
)
{
bR
=
br
;
}
public
aResource
(
cResource
cr
)
{
cR
=
cr
;
}
public
aResource
(
bResource
br
,
cResource
cr
)
{
bR
=
br
;
cR
=
cr
;
}
public
bResource
getB
()
{
return
bR
;
}
public
cResource
getC
()
{
return
cR
;
}
@Override
public
void
close
()
{
ResInNestedExpr
.
closing
(
this
.
getClass
().
getName
());
}
}
/**
* A resource to implement AutoCloseable
* Contains one other resources as a data item.
*/
static
class
bResource
implements
AutoCloseable
{
cResource
cR
;
public
bResource
()
{
cR
=
null
;
}
public
bResource
(
cResource
cr
)
{
cR
=
cr
;
}
public
cResource
getC
()
{
return
cR
;
}
@Override
public
void
close
()
{
ResInNestedExpr
.
closing
(
this
.
getClass
().
getName
());
}
}
/** A resource to implement AutoCloseable */
static
class
cResource
implements
AutoCloseable
{
public
cResource
()
{
}
@Override
public
void
close
()
{
ResInNestedExpr
.
closing
(
this
.
getClass
().
getName
());
}
}
}
test/tools/javac/TryWithResources/ResourceNameConflict.java
0 → 100644
浏览文件 @
e3969209
/*
* @test /nodynamiccopyright/
* @bug 8025113
* @author sogoel
* @summary Resource var cannot have same name as local variable
* @compile/fail/ref=ResourceNameConflict.out -XDrawDiagnostics ResourceNameConflict.java
*/
/**
* Test methods and their description
* test1() - negative test - local variable used as test resource
* test2() - negative test - test resource already defined in an enclosing for statement
*/
public
class
ResourceNameConflict
implements
AutoCloseable
{
static
final
String
str
=
"asdf"
;
void
test1
()
{
String
tr
=
"A resource spec var cannot have same name as local var."
;
try
(
ResourceNameConflict
tr
=
new
ResourceNameConflict
())
{
}
}
void
test2
(
String
...
strArray
)
{
for
(
String
str
:
strArray
)
{
try
(
ResourceNameConflict
str
=
new
ResourceNameConflict
())
{
}
}
}
@Override
public
void
close
()
{
}
}
test/tools/javac/TryWithResources/ResourceNameConflict.out
0 → 100644
浏览文件 @
e3969209
ResourceNameConflict.java:21:35: compiler.err.already.defined: kindname.variable, tr, kindname.method, test1()
ResourceNameConflict.java:27:39: compiler.err.already.defined: kindname.variable, str, kindname.method, test2(java.lang.String...)
2 errors
test/tools/javac/TryWithResources/ResourceRedecl.java
0 → 100644
浏览文件 @
e3969209
/*
* @test /nodynamiccopyright/
* @bug 8025113
* @author sogoel
* @summary Redeclaration of resource variables
* @compile/fail/ref=ResourceRedecl.out -XDrawDiagnostics ResourceRedecl.java
*/
import
java.io.*
;
public
class
ResourceRedecl
{
public
void
test
()
{
// compiler error if name of an exception param is redeclared within the Block of the catch clause as a local var;
// or as an exception param of a catch clause in a try statement;
// or as a resource in a try-with-resources statement
try
{
}
catch
(
Exception
exParam1
)
{
Object
exParam1
=
new
Object
();
try
(
java
.
io
.
FileInputStream
exParam1
=
new
java
.
io
.
FileInputStream
(
"foo.txt"
))
{
Object
exParam1
=
new
Object
();
}
catch
(
IOException
exParam1
)
{
}
}
// compiler error if resource is redeclared within the try Block as a local var
// or as an exception param of a catch clause in a try statement
try
(
java
.
io
.
FileInputStream
exParam2
=
new
java
.
io
.
FileInputStream
(
"bar.txt"
))
{
Object
exParam2
=
new
Object
();
try
(
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
"zee.txt"
)))
{
}
catch
(
IOException
exParam2
)
{
}
}
catch
(
Exception
ex
)
{
}
}
}
test/tools/javac/TryWithResources/ResourceRedecl.out
0 → 100644
浏览文件 @
e3969209
ResourceRedecl.java:19:20: compiler.err.already.defined: kindname.variable, exParam1, kindname.method, test()
ResourceRedecl.java:20:42: compiler.err.already.defined: kindname.variable, exParam1, kindname.method, test()
ResourceRedecl.java:21:24: compiler.err.already.defined: kindname.variable, exParam1, kindname.method, test()
ResourceRedecl.java:22:34: compiler.err.already.defined: kindname.variable, exParam1, kindname.method, test()
ResourceRedecl.java:29:20: compiler.err.already.defined: kindname.variable, exParam2, kindname.method, test()
ResourceRedecl.java:31:34: compiler.err.already.defined: kindname.variable, exParam2, kindname.method, test()
6 errors
test/tools/javac/TryWithResources/ResourceShadow.java
0 → 100644
浏览文件 @
e3969209
/*
* Copyright (c) 2010, 2013, 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 8025113
* @author sogoel
* @summary Test shadowing of resource variable
*/
/*
* "...a variable declared in a resource specification
* may be shadowed (6.3.1) anywhere inside a class declaration nested
* within the Block of the try."
*/
public
class
ResourceShadow
{
static
final
String
str
=
"asdf"
;
//this is okay
/**
* Resource variable shadows switch and case variables
*/
String
test1
()
{
String
ret
=
null
;
switch
(
str
)
{
case
str:
//this is okay
try
(
SilentCloseable
str
=
new
SilentCloseable
())
{
SilentCloseable
tr
=
new
SilentCloseable
(
str
);
ret
=
str
.
getClass
().
getSimpleName
();
}
break
;
default
:
ret
=
""
;
}
return
ret
;
}
/**
* Resource variable may be shadowed (6.3.1) anywhere inside a class
* declaration nested within the Block of the try
*/
String
test2
()
{
String
ret
=
null
;
try
(
SilentCloseable
str
=
new
SilentCloseable
())
{
class
temp
{
String
str
=
"I am not a SilentCloseable"
;
public
void
printSTR
()
{
System
.
out
.
println
(
str
);
}
public
String
getSTR
()
{
return
str
;
}
}
temp
tmp
=
new
temp
();
SilentCloseable
tr
=
new
SilentCloseable
(
tmp
.
getSTR
());
ret
=
tr
.
getMsg
();
}
return
ret
;
}
public
static
void
main
(
String
...
args
)
{
ResourceShadow
t
=
new
ResourceShadow
();
if
(
t
.
test1
().
compareTo
(
"SilentCloseable"
)
!=
0
)
{
throw
new
RuntimeException
(
"FAIL-test1"
);
}
if
(
t
.
test2
().
compareTo
(
"I am not a SilentCloseable"
)
!=
0
)
{
throw
new
RuntimeException
(
"FAIL-test2"
);
}
}
}
class
SilentCloseable
implements
AutoCloseable
{
SilentCloseable
testres
=
null
;
String
msg
=
"default"
;
@Override
public
void
close
()
{
}
public
SilentCloseable
()
{
}
public
SilentCloseable
(
String
s
)
{
msg
=
s
;
}
public
SilentCloseable
(
SilentCloseable
tr
)
{
testres
=
tr
;
}
public
String
getMsg
()
{
return
msg
;
}
}
test/tools/javac/TryWithResources/TestTwr09.java
0 → 100644
浏览文件 @
e3969209
/*
* Copyright (c) 2010, 2013, 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 8025113
* @author sogoel
* @summary t-w-r completes abruptly if the initialization of resource completes abruptly
*/
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.File
;
/*
* If the initialization of the resource completes abruptly because of a
* throw of a value V ... and the automatic ->closing of the resource completes normally,
* then the try-with-resources statement completes abruptly because of the throw of value V.
*/
public
class
TestTwr09
{
/**
* throw from ctor of nested resource
* Check first resource is not open.
*/
String
test1
()
{
String
ret
=
null
;
try
(
ResCloseable
tr
=
new
ResCloseable
(
new
ResCloseable
(
"throw from inner resource ctor"
,
3
)))
{
ret
=
"FAIL"
;
}
catch
(
RuntimeException
re
)
{
ret
=
re
.
getMessage
();
}
return
ret
;
}
/**
* throw from ctor of 2nd resource.
* 1st resource, FileInputStream should be automatically closed.
*/
String
test2
()
{
String
ret
=
null
;
byte
[]
buf
=
new
byte
[
1
];
try
(
java
.
io
.
ByteArrayInputStream
tr
=
new
java
.
io
.
ByteArrayInputStream
(
buf
);
ResCloseable
str
=
new
ResCloseable
(
"throw from inner resource ctor"
,
3
))
{
ret
=
"FAIL"
;
}
catch
(
final
IOException
fe
)
{
ret
=
"FAIL test2"
;
}
catch
(
RuntimeException
re
)
{
ret
=
"PASS test2"
;
}
System
.
out
.
println
(
"Ret = "
+
ret
);
return
ret
;
}
public
static
void
main
(
String
...
args
)
{
TestTwr09
t
=
new
TestTwr09
();
if
(
t
.
test1
().
compareTo
(
"throw from inner resource ctor"
)
!=
0
)
{
throw
new
RuntimeException
(
"FAIL-test1"
);
}
if
(
t
.
test2
().
compareTo
(
"PASS test2"
)
!=
0
)
{
throw
new
RuntimeException
(
"FAIL-test2"
);
}
}
}
/** a simple resource the implements AutoCloseable so it can be used
* in twr's resource specification block.
*/
class
ResCloseable
implements
AutoCloseable
{
ResCloseable
testres
=
null
;
String
msg
=
"default"
;
boolean
bOpen
=
false
;
public
ResCloseable
()
{
bOpen
=
true
;
}
public
ResCloseable
(
ResCloseable
tr
)
{
bOpen
=
true
;
msg
=
tr
.
getMsg
();
}
public
ResCloseable
(
String
s
)
{
bOpen
=
true
;
msg
=
s
;
}
public
ResCloseable
(
String
msg
,
int
c
)
{
bOpen
=
true
;
if
(
c
==
3
)
{
throw
new
RuntimeException
(
msg
);
}
}
@Override
public
void
close
()
{
bOpen
=
false
;
}
public
boolean
isOpen
()
{
return
bOpen
;
}
public
String
getMsg
()
{
return
msg
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录