Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
ce756427
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看板
提交
ce756427
编写于
9月 07, 2012
作者:
J
jjg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7196760: tree end positions incorrect after anno processing
Reviewed-by: mcimadamore
上级
4ecfc1b8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
105 addition
and
1 deletion
+105
-1
src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
...un/tools/javac/processing/JavacProcessingEnvironment.java
+3
-1
src/share/classes/com/sun/tools/javac/util/Log.java
src/share/classes/com/sun/tools/javac/util/Log.java
+4
-0
test/tools/javac/api/EndPositions.java
test/tools/javac/api/EndPositions.java
+98
-0
未找到文件。
src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
浏览文件 @
ce756427
...
...
@@ -1072,8 +1072,10 @@ public class JavacProcessingEnvironment implements ProcessingEnvironment, Closea
Assert
.
checkNonNull
(
tokens
);
next
.
put
(
Tokens
.
tokensKey
,
tokens
);
Log
nextLog
=
Log
.
instance
(
next
);
// propogate the log's writers directly, instead of going through context
Log
.
instance
(
next
).
setWriters
(
log
);
nextLog
.
setWriters
(
log
);
nextLog
.
setSourceMap
(
log
);
JavaCompiler
oldCompiler
=
JavaCompiler
.
instance
(
context
);
JavaCompiler
nextCompiler
=
JavaCompiler
.
instance
(
next
);
...
...
src/share/classes/com/sun/tools/javac/util/Log.java
浏览文件 @
ce756427
...
...
@@ -301,6 +301,10 @@ public class Log extends AbstractLog {
this
.
errWriter
=
other
.
errWriter
;
}
public
void
setSourceMap
(
Log
other
)
{
this
.
sourceMap
=
other
.
sourceMap
;
}
/** Flush the logs
*/
public
void
flush
()
{
...
...
test/tools/javac/api/EndPositions.java
0 → 100644
浏览文件 @
ce756427
/*
* Copyright (c) 2010, 2012, 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 7196760
* @summary javac doesn't report Diagnostic end positions properly when
* an annotation processor is present
*/
import
com.sun.source.tree.ClassTree
;
import
com.sun.source.tree.CompilationUnitTree
;
import
com.sun.source.tree.Tree
;
import
com.sun.source.util.JavacTask
;
import
com.sun.source.util.Trees
;
import
java.io.IOException
;
import
java.net.URI
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
import
javax.annotation.processing.*
;
import
javax.lang.model.*
;
import
javax.lang.model.element.*
;
import
javax.tools.JavaCompiler
;
import
javax.tools.JavaFileObject
;
import
javax.tools.SimpleJavaFileObject
;
import
javax.tools.Diagnostic
;
import
javax.tools.DiagnosticCollector
;
import
static
javax
.
tools
.
JavaFileObject
.
Kind
.
SOURCE
;
import
javax.tools.ToolProvider
;
@SupportedAnnotationTypes
(
"*"
)
public
class
EndPositions
extends
AbstractProcessor
{
public
static
void
main
(
String
...
args
)
throws
IOException
{
class
MyFileObject
extends
SimpleJavaFileObject
{
MyFileObject
()
{
super
(
URI
.
create
(
"myfo:///Test.java"
),
SOURCE
);
}
@Override
public
String
getCharContent
(
boolean
ignoreEncodingErrors
)
{
// 0 1 2 3
// 012345678901234567890123456789012345
return
"class Test { String s = 1234; }"
;
}
}
JavaCompiler
javac
=
ToolProvider
.
getSystemJavaCompiler
();
List
<
JavaFileObject
>
compilationUnits
=
Collections
.<
JavaFileObject
>
singletonList
(
new
MyFileObject
());
DiagnosticCollector
<
JavaFileObject
>
diagnostics
=
new
DiagnosticCollector
<
JavaFileObject
>();
List
<
String
>
options
=
Arrays
.
asList
(
"-processor"
,
EndPositions
.
class
.
getCanonicalName
());
JavacTask
task
=
(
JavacTask
)
javac
.
getTask
(
null
,
null
,
diagnostics
,
options
,
null
,
compilationUnits
);
boolean
valid
=
task
.
call
();
if
(
valid
)
throw
new
AssertionError
(
"Compilation succeeded unexpectedly"
);
List
<
Diagnostic
<?
extends
JavaFileObject
>>
errors
=
diagnostics
.
getDiagnostics
();
if
(
errors
.
size
()
!=
1
)
throw
new
AssertionError
(
"Expected one error only, but found "
+
errors
.
size
()
+
" errors"
);
Diagnostic
<?>
error
=
errors
.
get
(
0
);
if
(
error
.
getStartPosition
()
>=
error
.
getEndPosition
())
throw
new
AssertionError
(
"Expected start to be less than end position: start ["
+
error
.
getStartPosition
()
+
"], end ["
+
error
.
getEndPosition
()
+
"]"
);
System
.
out
.
println
(
"All is good!"
);
}
@Override
public
boolean
process
(
Set
<?
extends
TypeElement
>
annotations
,
RoundEnvironment
roundEnv
)
{
return
true
;
}
@Override
public
SourceVersion
getSupportedSourceVersion
()
{
return
SourceVersion
.
latest
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录