From e865446205a1009ae68f681466efbb6cbc76ca0e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 3 Feb 2024 11:51:11 +0000 Subject: Add visibility to mutable data elements --- .../compiler/backends/llvm/codegen/PatioToLlvm.java | 2 +- .../shedlang/compiler/patio/PatioDataElementMutable.java | 1 + .../java/org/shedlang/compiler/patio/PatioSerializer.java | 1 + .../shedlang/compiler/shidtopatio/ShidToPatioContext.java | 14 ++++++++++++-- .../compiler/shidtopatio/ShidToPatioNamespaces.java | 2 ++ 5 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java index aecefd7f..dd10b2f7 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java @@ -209,7 +209,7 @@ public class PatioToLlvm { context.target() )), false, - true, + patioDataElementMutable.visibility().isPrivate(), true )); } diff --git a/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutable.java b/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutable.java index 674a52a3..303b5f81 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutable.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutable.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.sources.Source; public record PatioDataElementMutable( String name, + PatioVisibility visibility, PatioDataValue initialValue, Source source ) implements PatioCompilationUnitElement { diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java index dc61d245..0b6b52e5 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java @@ -107,6 +107,7 @@ public class PatioSerializer { treeList( treeIdentifier("data-mutable"), treeString(dataElementMutable.name()), + visibilityToTree(dataElementMutable.visibility()), dataValueToTree(dataElementMutable.initialValue()) ); diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioContext.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioContext.java index bdfacb9a..3d4662e2 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioContext.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioContext.java @@ -605,8 +605,18 @@ public record ShidToPatioContext( } @CheckReturnValue - public ShidToPatioContext addDataElementMutable(String name, PatioDataValue initialValue, Source source) { - var dataElement = new PatioDataElementMutable(name, initialValue, source); + public ShidToPatioContext addDataElementMutable( + String name, + PatioVisibility visibility, + PatioDataValue initialValue, + Source source + ) { + var dataElement = new PatioDataElementMutable( + name, + visibility, + initialValue, + source + ); return addCompilationUnitElement(dataElement); } diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioNamespaces.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioNamespaces.java index b2f1447f..0ceafc56 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioNamespaces.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioNamespaces.java @@ -68,12 +68,14 @@ public class ShidToPatioNamespaces { context = context.addDataElementMutable( globalNameNamespaceValue(namespaceName), + PatioVisibility.PRIVATE, PatioDataValues.dataPtrNull(), source ); context = context.addDataElementMutable( globalNameNamespaceIsInited(namespaceName), + PatioVisibility.PRIVATE, PatioDataValues.bool(false), source ); -- cgit v1.2.3