diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-20 16:33:58 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-20 16:33:58 +0000 |
| commit | 6b9351154cade24a2cc962dcdced470a57c093bf (patch) | |
| tree | 1be71d1b4d063b16c970f06f4ca917f46f6ddead /src/main/java | |
| parent | c8e2b873949eafcedb9dc131d1bb25eb2b127e40 (diff) | |
Extract main function name
Diffstat (limited to 'src/main/java')
3 files changed, 25 insertions, 5 deletions
diff --git a/src/main/java/org/shedlang/compiler/config/ConfigChecker.java b/src/main/java/org/shedlang/compiler/config/ConfigChecker.java index fe607f83..5ffa074c 100644 --- a/src/main/java/org/shedlang/compiler/config/ConfigChecker.java +++ b/src/main/java/org/shedlang/compiler/config/ConfigChecker.java @@ -8,6 +8,8 @@ import org.shedlang.compiler.types.Types; import java.util.List; +import static org.shedlang.compiler.config.MainFunction.MAIN_FUNCTION_NAME; + public class ConfigChecker { private ConfigChecker() { } @@ -20,10 +22,14 @@ public class ConfigChecker { static void configCheckBin(BinConfig binConfig, TypeInfos typeInfos) { var namespaceTypeInfo = typeInfos.namespaceTypeInfo(binConfig.mainNamespace()) - .orElseThrow(() -> new ConfigError("Namespace " + binConfig.mainNamespace() + " not found")); + .orElseThrow(() -> new ConfigError( + "Namespace " + binConfig.mainNamespace() + " not found" + )); - var mainType = namespaceTypeInfo.fieldType("main") - .orElseThrow(() -> new ConfigError("Namespace " + binConfig.mainNamespace() + " has no field main")); + var mainType = namespaceTypeInfo.fieldType(MAIN_FUNCTION_NAME) + .orElseThrow(() -> new ConfigError( + "Namespace " + binConfig.mainNamespace() + " has no field " + MAIN_FUNCTION_NAME + )); var expectedMainType = new FunctionType( List.of(), @@ -33,7 +39,11 @@ public class ConfigChecker { ); if (!mainType.equals(expectedMainType)) { - throw new ConfigError("main function should have type " + expectedMainType.describe() + ", but " + binConfig.mainNamespace() + ".main has type " + mainType.describe()); + throw new ConfigError( + MAIN_FUNCTION_NAME + " function should have type " + expectedMainType.describe() + + ", but " + binConfig.mainNamespace() + "." + MAIN_FUNCTION_NAME + + " has type " + mainType.describe() + ); } } } diff --git a/src/main/java/org/shedlang/compiler/config/MainFunction.java b/src/main/java/org/shedlang/compiler/config/MainFunction.java new file mode 100644 index 00000000..0a20d1b3 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/config/MainFunction.java @@ -0,0 +1,8 @@ +package org.shedlang.compiler.config; + +public class MainFunction { + private MainFunction() { + } + + public static final String MAIN_FUNCTION_NAME = "main"; +} diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java index d0a04c97..ccacdf8e 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java @@ -16,6 +16,8 @@ import org.shedlang.compiler.types.NamespaceName; import java.util.*; import java.util.function.Function; +import static org.shedlang.compiler.config.MainFunction.MAIN_FUNCTION_NAME; + public class PatioCodeGen { private PatioCodeGen() {} @@ -66,7 +68,7 @@ public class PatioCodeGen { mainField, namespaceValue, main, - "main", + MAIN_FUNCTION_NAME, source, mainContext ); |
