From a721490f623e198c058ab3f47439808fec05b2be Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 17 Oct 2014 21:35:16 +0200 Subject: [PATCH] IDEA-127182 (passing line number map to debugger) --- .../decompiler/main/decompiler/ConsoleDecompiler.java | 2 +- .../java/decompiler/main/extern/IResultSaver.java | 2 +- src/org/jetbrains/java/decompiler/struct/ContextUnit.java | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java b/src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java index a486d9f..08ec683 100644 --- a/src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java +++ b/src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java @@ -181,7 +181,7 @@ public class ConsoleDecompiler implements IBytecodeProvider, IResultSaver { } @Override - public void saveClassFile(String path, String qualifiedName, String entryName, String content) { + public void saveClassFile(String path, String qualifiedName, String entryName, String content, int[] mapping) { File file = new File(getAbsolutePath(path), entryName); try { Writer out = new OutputStreamWriter(new FileOutputStream(file), "UTF8"); diff --git a/src/org/jetbrains/java/decompiler/main/extern/IResultSaver.java b/src/org/jetbrains/java/decompiler/main/extern/IResultSaver.java index 1e6a7d4..269f1c5 100644 --- a/src/org/jetbrains/java/decompiler/main/extern/IResultSaver.java +++ b/src/org/jetbrains/java/decompiler/main/extern/IResultSaver.java @@ -22,7 +22,7 @@ public interface IResultSaver { void copyFile(String source, String path, String entryName); - void saveClassFile(String path, String qualifiedName, String entryName, String content); + void saveClassFile(String path, String qualifiedName, String entryName, String content, int[] mapping); void createArchive(String path, String archiveName, Manifest manifest); diff --git a/src/org/jetbrains/java/decompiler/struct/ContextUnit.java b/src/org/jetbrains/java/decompiler/struct/ContextUnit.java index 819ae64..850c3d8 100644 --- a/src/org/jetbrains/java/decompiler/struct/ContextUnit.java +++ b/src/org/jetbrains/java/decompiler/struct/ContextUnit.java @@ -15,6 +15,8 @@ */ package org.jetbrains.java.decompiler.struct; +import org.jetbrains.java.decompiler.main.DecompilerContext; +import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences; import org.jetbrains.java.decompiler.main.extern.IResultSaver; import org.jetbrains.java.decompiler.struct.lazy.LazyLoader; import org.jetbrains.java.decompiler.struct.lazy.LazyLoader.Link; @@ -112,7 +114,11 @@ public class ContextUnit { if (entryName != null) { String content = decompiledData.getClassContent(cl); if (content != null) { - resultSaver.saveClassFile(filename, cl.qualifiedName, entryName, content); + int[] mapping = null; + if (DecompilerContext.getOption(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING)) { + mapping = DecompilerContext.getBytecodeSourceMapper().getOriginalLinesMapping(); + } + resultSaver.saveClassFile(filename, cl.qualifiedName, entryName, content, mapping); } } }