summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-05-26 15:47:00 +0400
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-05-26 15:49:53 +0400
commit27f08da5cbeca38640327d36feff6274f72cc7b0 (patch)
tree6f9920bab4293492510ffcca542b12fd57719d92
parent9e231a7e2e86c7e9030667f22b9fa66af96b7b72 (diff)
downloadfernflower-27f08da5cbeca38640327d36feff6274f72cc7b0.tar
fernflower-27f08da5cbeca38640327d36feff6274f72cc7b0.tar.gz
fernflower-27f08da5cbeca38640327d36feff6274f72cc7b0.tar.lz
fernflower-27f08da5cbeca38640327d36feff6274f72cc7b0.tar.xz
fernflower-27f08da5cbeca38640327d36feff6274f72cc7b0.zip
deprecation comments generation changed once again
new behavior: - depreaction comment (/** @deprecated */) is added always - @Deprecated annotation is added only when presented in .class file rationale: - both deprecation comment and @Deprecated anno produce "Deprecated" attribute - adding annotation to members deprecated by comment (old behavior) is actually incorrect - adding comment to members deprecated by annotation may be incorrect but is acceptable (there is no way to tell if a member was deprecated by sole annotation or both by annotation and comment) - additional configuration option is therefore no longer needed
-rw-r--r--dist/docs/readme.txt3
-rw-r--r--src/de/fernflower/main/ClassWriter.java58
-rw-r--r--src/de/fernflower/main/extern/IFernflowerPreferences.java1
3 files changed, 15 insertions, 47 deletions
diff --git a/dist/docs/readme.txt b/dist/docs/readme.txt
index 09d17be..e51a5de 100644
--- a/dist/docs/readme.txt
+++ b/dist/docs/readme.txt
@@ -63,8 +63,7 @@ ren (0): rename ambiguous (resp. obfuscated) classes and class elements
urc : full name of user-supplied class implementing IIdentifierRenamer. It is used to determine which
class identifiers should be renamed and provides new identifier names. For more information
s. section 5
-dpc (0): generate a special comment ('/** @deprecated */') for deprecated classes and class members
-inn (1): check for IntelliJ IDEA-specific @NotNull annotation and remove inserted code if found
+inn (1): check for IntelliJ IDEA-specific @NotNull annotation and remove inserted code if found
lac (0): decompile lambda expressions to anonymous classes
nls (0): define new line character to be used for output. 0 - '\r\n' (Windows), 1 - '\n' (Linux)
diff --git a/src/de/fernflower/main/ClassWriter.java b/src/de/fernflower/main/ClassWriter.java
index 54a490e..a500fa4 100644
--- a/src/de/fernflower/main/ClassWriter.java
+++ b/src/de/fernflower/main/ClassWriter.java
@@ -344,25 +344,15 @@ public class ClassWriter {
writer.newLine();
}
}
-
- // class annotations
- boolean hasDeprecatedAnno = false;
- List<AnnotationExprent> lstAnn = getAllAnnotations(cl.getAttributes());
- for(AnnotationExprent annexpr : lstAnn) {
- if("java/lang/Deprecated".equals(annexpr.getClassname())) {
- hasDeprecatedAnno = true;
- }
- }
- if ((isDeprecated || hasDeprecatedAnno) && DecompilerContext.getOption(IFernflowerPreferences.DEPRECATED_COMMENT)) {
+
+ if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
}
- if(isDeprecated && !hasDeprecatedAnno) {
- writer.write(indstr);
- writer.write("@Deprecated");
- writer.newLine();
- }
+
+ // class annotations
+ List<AnnotationExprent> lstAnn = getAllAnnotations(cl.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
writer.write(annexpr.toJava(indent));
writer.newLine();
@@ -490,25 +480,15 @@ public class ClassWriter {
}
boolean isDeprecated = fd.getAttributes().containsKey("Deprecated");
-
- // field annotations
- boolean hasDeprecatedAnno = false;
- List<AnnotationExprent> lstAnn = getAllAnnotations(fd.getAttributes());
- for(AnnotationExprent annexpr : lstAnn) {
- if("java/lang/Deprecated".equals(annexpr.getClassname())) {
- hasDeprecatedAnno = true;
- }
- }
- if ((isDeprecated || hasDeprecatedAnno) && DecompilerContext.getOption(IFernflowerPreferences.DEPRECATED_COMMENT)) {
+
+ if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
}
- if(isDeprecated && !hasDeprecatedAnno) {
- writer.write(indstr);
- writer.write("@Deprecated");
- writer.newLine();
- }
+
+ // field annotations
+ List<AnnotationExprent> lstAnn = getAllAnnotations(fd.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
writer.write(annexpr.toJava(indent));
writer.newLine();
@@ -729,24 +709,14 @@ public class ClassWriter {
}
}
- // method annotations
- boolean hasDeprecatedAnno = false;
- List<AnnotationExprent> lstAnn = getAllAnnotations(mt.getAttributes());
- for(AnnotationExprent annexpr : lstAnn) {
- if("java/lang/Deprecated".equals(annexpr.getClassname())) {
- hasDeprecatedAnno = true;
- }
- }
- if ((isDeprecated || hasDeprecatedAnno) && DecompilerContext.getOption(IFernflowerPreferences.DEPRECATED_COMMENT)) {
+ if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
}
- if(isDeprecated && !hasDeprecatedAnno) {
- bufstrwriter.write(indstr);
- bufstrwriter.write("@Deprecated");
- bufstrwriter.newLine();
- }
+
+ // method annotations
+ List<AnnotationExprent> lstAnn = getAllAnnotations(mt.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
bufstrwriter.write(annexpr.toJava(indent));
bufstrwriter.newLine();
diff --git a/src/de/fernflower/main/extern/IFernflowerPreferences.java b/src/de/fernflower/main/extern/IFernflowerPreferences.java
index 0d3ea52..35b17de 100644
--- a/src/de/fernflower/main/extern/IFernflowerPreferences.java
+++ b/src/de/fernflower/main/extern/IFernflowerPreferences.java
@@ -46,7 +46,6 @@ public interface IFernflowerPreferences {
public static final String LOG_LEVEL = "log";
- public static final String DEPRECATED_COMMENT = "dpc";
public static final String NEW_LINE_SEPARATOR = "nls";
public static final String IDEA_NOT_NULL_ANNOTATION = "inn";
public static final String LAMBDA_TO_ANONYMOUS_CLASS = "lac";