diff options
author | Jonas Herzig <me@johni0702.de> | 2019-12-08 10:58:30 +0100 |
---|---|---|
committer | Jonas Herzig <me@johni0702.de> | 2019-12-08 11:11:51 +0100 |
commit | 4db7bcc523ed8adb32c98cff8785c1351132d7cf (patch) | |
tree | 26ee5c990aeb44ddf1d5282af63564db4b88644f /src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt | |
parent | ff84669a02e8ffd3e634db4321dbc199b35effce (diff) | |
download | Remap-4db7bcc523ed8adb32c98cff8785c1351132d7cf.tar.gz Remap-4db7bcc523ed8adb32c98cff8785c1351132d7cf.tar.bz2 Remap-4db7bcc523ed8adb32c98cff8785c1351132d7cf.zip |
Move remap error handling to the caller
This e.g. allows the preprocessor to ignore errors in lines which it
would have commented out anyway.
Diffstat (limited to 'src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt')
-rw-r--r-- | src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt index 1e5b5ad..35d4fd5 100644 --- a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt +++ b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt @@ -23,13 +23,12 @@ import java.util.* internal class PsiMapper(private val map: MappingSet, private val file: PsiFile) { private val mixinMappings = mutableMapOf<String, ClassMapping<*, *>>() - private var error: Boolean = false + private val errors = mutableListOf<Pair<Int, String>>() private val changes = TreeMap<TextRange, String>(Comparator.comparing<TextRange, Int> { it.startOffset }) private fun error(at: PsiElement, message: String) { val line = StringUtil.offsetToLineNumber(file.text, at.textOffset) - System.err.println(file.name + ":" + line + ": " + message) - error = true + errors.add(Pair(line, message)) } private fun replace(e: PsiElement, with: String) { @@ -54,15 +53,12 @@ internal class PsiMapper(private val map: MappingSet, private val file: PsiFile) return before == null || !before.intersects(range) } - private fun getResult(text: String): String? { - if (error) { - return null - } + private fun getResult(text: String): Pair<String, List<Pair<Int, String>>> { var result = text for ((key, value) in changes.descendingMap()) { result = key.replace(result, value) } - return result + return Pair(result, errors) } private fun map(expr: PsiElement, field: PsiField) { @@ -427,7 +423,7 @@ internal class PsiMapper(private val map: MappingSet, private val file: PsiFile) }) } - fun remapFile(bindingContext: BindingContext): String? { + fun remapFile(bindingContext: BindingContext): Pair<String, List<Pair<Int, String>>> { file.accept(object : JavaRecursiveElementVisitor() { override fun visitClass(psiClass: PsiClass) { val annotation = psiClass.getAnnotation(CLASS_MIXIN) ?: return |