diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index 25892565..0840bca6 100644 --- a/src/main/java/carpet/script/CarpetScriptHost.java +++ b/src/main/java/carpet/script/CarpetScriptHost.java @@ -210,7 +210,7 @@ public class CarpetScriptHost extends ScriptHost switch (tok.type) { case VARIABLE: - LazyValue var = getGlobalVariable(tok.surface.toLowerCase(Locale.ROOT)); + LazyValue var = getGlobalVariable(tok.surface); if (var != null) { argv.add(var); diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index 9031d021..041d2221 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -321,7 +321,6 @@ public class Expression public void addUnaryFunction(String name, Function fun) { - name = name.toLowerCase(Locale.ROOT); functions.put(name, new AbstractFunction(1) { @Override @@ -334,7 +333,6 @@ public class Expression public void addBinaryFunction(String name, BiFunction fun) { - name = name.toLowerCase(Locale.ROOT); functions.put(name, new AbstractFunction(2) { @Override @@ -350,7 +348,6 @@ public class Expression public void addFunction(String name, Function, Value> fun) { - name = name.toLowerCase(Locale.ROOT); functions.put(name, new AbstractFunction(-1) { @Override @@ -377,7 +374,6 @@ public class Expression public void addLazyFunction(String name, int num_params, TriFunction, LazyValue> fun) { - name = name.toLowerCase(Locale.ROOT); functions.put(name, new AbstractLazyFunction(num_params) { @Override @@ -396,7 +392,6 @@ public class Expression } public FunctionValue addContextFunction(Context context, String name, Expression expr, Tokenizer.Token token, List arguments, List outers, LazyValue code) { - name = name.toLowerCase(Locale.ROOT); if (functions.containsKey(name)) throw new ExpressionException(context, expr, token, "Function "+name+" would mask a built-in function"); Map contextValues = new HashMap<>(); @@ -434,6 +429,7 @@ public class Expression if (lv.size() < 1) throw new InternalExpressionException("'import' needs at least a module name to import, and list of values to import"); String moduleName = lv.get(0).evalValue(c).getString(); c.host.importModule(c, moduleName); + moduleName = moduleName.toLowerCase(Locale.ROOT); if (lv.size() > 1) c.host.importNames(c, module, moduleName, lv.subList(1, lv.size()).stream().map((l) -> l.evalValue(c).getString()).collect(Collectors.toList())); if (t == Context.VOID) @@ -2289,7 +2285,7 @@ public class Expression stack.push((c, t) -> getOrSetAnyVariable(c, token.surface).evalValue(c)); break; case FUNCTION: - String name = token.surface.toLowerCase(Locale.ROOT); + String name = token.surface; ILazyFunction f; ArrayList p; boolean isKnown = functions.containsKey(name); // globals will be evaluated lazily, not at compile time via . @@ -2376,7 +2372,7 @@ public class Expression case OPERATOR: if (stack.peek() < 2) { - if (token.surface.equalsIgnoreCase(";")) + if (token.surface.equals(";")) { throw new ExpressionException(c, this, token, "Unnecessary semicolon"); } @@ -2386,7 +2382,7 @@ public class Expression stack.set(stack.size() - 1, stack.peek() - 2 + 1); break; case FUNCTION: - ILazyFunction f = functions.get(token.surface.toLowerCase(Locale.ROOT));// don't validate global - userdef functions + ILazyFunction f = functions.get(token.surface);// don't validate global - userdef functions int numParams = stack.pop(); if (f != null && !f.numParamsVaries() && numParams != f.getNumParams()) { diff --git a/src/main/java/carpet/script/ScriptHost.java b/src/main/java/carpet/script/ScriptHost.java index e2dac757..385d07b3 100644 --- a/src/main/java/carpet/script/ScriptHost.java +++ b/src/main/java/carpet/script/ScriptHost.java @@ -10,6 +10,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Random; import java.util.concurrent.ConcurrentHashMap; @@ -107,7 +108,7 @@ public abstract class ScriptHost public void importModule(Context c, String moduleName) { - if (modules.containsKey(moduleName)) return; // aready imported + if (modules.containsKey(moduleName.toLowerCase(Locale.ROOT))) return; // aready imported Module module = getModuleOrLibraryByName(moduleName); if (modules.containsKey(module.getName())) return; // aready imported, once again, in case some discrepancies in names? modules.put(module.getName(), module);