aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-02-03 11:51:11 +0000
committerMichael Williamson <mike@zwobble.org>2024-02-03 11:51:11 +0000
commite865446205a1009ae68f681466efbb6cbc76ca0e (patch)
tree4c223fc17aae9fb577506bab140aadad0fb1e723 /src/main/java
parent98f89a00ae444eccded942b9c6132856e5473b1c (diff)
Add visibility to mutable data elements
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioDataElementMutable.java1
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioSerializer.java1
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioContext.java14
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioNamespaces.java2
5 files changed, 17 insertions, 3 deletions
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
);