From d1e7efbf5adab7516a19fd35c9fa9a3fdca2e769 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 1 Apr 2016 10:50:28 +0100 Subject: Mangle reserved identifiers in C# backend --- .../org/zwobble/couscous/backends/SourceCodeWriter.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java') diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java index 393cdc2..57959fd 100644 --- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java +++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java @@ -1,9 +1,11 @@ package org.zwobble.couscous.backends; +import com.google.common.base.Function; import com.google.common.base.Strings; import org.zwobble.couscous.util.Action; import java.util.Iterator; +import java.util.Set; import java.util.function.Consumer; public class SourceCodeWriter { @@ -16,11 +18,15 @@ public class SourceCodeWriter { private final WriterAction blockStart; private final WriterAction blockEnd; + private final Set reservedIdentifiers; + private final Function mangleReservedIdentifier; private int depth = 0; - public SourceCodeWriter(WriterAction blockStart, WriterAction blockEnd) { + public SourceCodeWriter(WriterAction blockStart, WriterAction blockEnd, Set reservedIdentifiers, Function mangleReservedIdentifier) { this.blockStart = blockStart; this.blockEnd = blockEnd; + this.reservedIdentifiers = reservedIdentifiers; + this.mangleReservedIdentifier = mangleReservedIdentifier; } public String asString() { @@ -51,7 +57,10 @@ public class SourceCodeWriter { } public void writeIdentifier(String name) { - builder.append(name); + String nameToWrite = reservedIdentifiers.contains(name) + ? mangleReservedIdentifier.apply(name) + : name; + builder.append(nameToWrite); } public void writeSymbol(String symbol) { -- cgit v1.2.3