From 2ec7f973ce084932ffe25516dc3fe27e2011450d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 3 Feb 2024 11:39:30 +0000 Subject: Add visibility to PatioDataElementImmutable --- .../shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java | 2 +- .../shedlang/compiler/patio/PatioDataElementImmutable.java | 1 + .../java/org/shedlang/compiler/patio/PatioSerializer.java | 1 + .../java/org/shedlang/compiler/patio/PatioVisibility.java | 12 +++++++++++- .../java/org/shedlang/compiler/shidtopatio/ShidToPatio.java | 1 + .../shedlang/compiler/shidtopatio/ShidToPatioStrings.java | 2 ++ 6 files changed, 17 insertions(+), 2 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 859d79ab..aecefd7f 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 @@ -189,7 +189,7 @@ public class PatioToLlvm { context.target() )), true, - false, + patioDataElementImmutable.visibility().isPrivate(), true )); } diff --git a/src/main/java/org/shedlang/compiler/patio/PatioDataElementImmutable.java b/src/main/java/org/shedlang/compiler/patio/PatioDataElementImmutable.java index fef9f1fd..c2f90725 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioDataElementImmutable.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioDataElementImmutable.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.sources.Source; public record PatioDataElementImmutable( String name, + PatioVisibility visibility, PatioDataValue value, 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 d6db62c6..dc61d245 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java @@ -99,6 +99,7 @@ public class PatioSerializer { treeList( treeIdentifier("data-immutable"), treeString(dataElementImmutable.name()), + visibilityToTree(dataElementImmutable.visibility()), dataValueToTree(dataElementImmutable.value()) ); diff --git a/src/main/java/org/shedlang/compiler/patio/PatioVisibility.java b/src/main/java/org/shedlang/compiler/patio/PatioVisibility.java index 55ccc361..b5bf6701 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioVisibility.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioVisibility.java @@ -2,5 +2,15 @@ package org.shedlang.compiler.patio; public enum PatioVisibility { PRIVATE, - PUBLIC, + PUBLIC; + + public boolean isPrivate() { + return switch(this) { + case PRIVATE -> + true; + + case PUBLIC -> + false; + }; + } } diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java index 0831fd71..ba3995cb 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java @@ -1024,6 +1024,7 @@ public class ShidToPatio { context = context.addCompilationUnitElement(new PatioDataElementImmutable( "shed__rtti", + PatioVisibility.PUBLIC, PatioDataValues.array( PatioDataLayouts.struct(List.of( PatioDataLayouts.INT32, diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStrings.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStrings.java index 25643169..599d3319 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStrings.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStrings.java @@ -3,6 +3,7 @@ package org.shedlang.compiler.shidtopatio; import org.shedlang.compiler.patio.PatioDataElementImmutable; import org.shedlang.compiler.patio.PatioFunctionDeclaration; import org.shedlang.compiler.patio.PatioLocal; +import org.shedlang.compiler.patio.PatioVisibility; import org.shedlang.compiler.patio.instructions.PatioCall; import org.shedlang.compiler.patio.operands.PatioDataPtrConst; import org.shedlang.compiler.patio.operands.PatioLocalRef; @@ -57,6 +58,7 @@ public class ShidToPatioStrings { context = context.addCompilationUnitElement(new PatioDataElementImmutable( elementName, + PatioVisibility.PRIVATE, dataValue, source )); -- cgit v1.2.3