Skip to content

Commit 689bc2b

Browse files
committed
Fix optimization issue in material_info
1 parent f14c8e5 commit 689bc2b

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/main/java/com/laytonsmith/core/functions/Minecraft.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1268,7 +1268,7 @@ public ParseTree optimizeDynamic(Target t, Environment env,
12681268
if(children.size() < 1) {
12691269
return null;
12701270
}
1271-
if(ArgumentValidation.isNumber(children.get(0).getData())) {
1271+
if(children.get(0).isConst() && ArgumentValidation.isNumber(children.get(0).getData())) {
12721272
env.getEnv(CompilerEnvironment.class).addCompilerWarning(fileOptions,
12731273
new CompilerWarning("Numeric ids are deprecated in " + getName() + ".", t, null));
12741274
}

src/test/java/com/laytonsmith/core/functions/MinecraftTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.laytonsmith.abstraction.MCPlayer;
66
import com.laytonsmith.abstraction.MCServer;
77
import com.laytonsmith.abstraction.enums.MCVersion;
8+
import com.laytonsmith.core.MethodScriptCompiler;
89
import com.laytonsmith.core.Static;
910
import com.laytonsmith.core.environments.CommandHelperEnvironment;
1011
import com.laytonsmith.core.exceptions.ConfigCompileException;
@@ -81,4 +82,14 @@ public void testGetMCVersion() {
8182
assertEquals(MCVersion.match(new String[]{"1", "8", "8"}), MCVersion.MC1_8_X);
8283
assertEquals(MCVersion.match(new String[]{"3", "1", "4"}), MCVersion.MCX_X);
8384
}
85+
86+
@Test
87+
public void testMaterialInfoWithVariable() throws Exception {
88+
// material_info's optimizeDynamic should not crash when the first
89+
// argument is a variable (IVariable has no @typeof annotation).
90+
String script = "assign(@mat, 'STONE') material_info(@mat, 'isBlock')";
91+
MethodScriptCompiler.compile(
92+
MethodScriptCompiler.lex(script, env, null, true),
93+
env, env.getEnvClasses());
94+
}
8495
}

0 commit comments

Comments
 (0)