From 11111e5733b189127dc2c4934d67693b9bc6e764 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 6 Dec 2023 12:05:07 -0800 Subject: Support visibility control and default to `internal`. (#3380) * Support visibility control and default to `internal`. * Fix wip. * Fixes. * Fix. * Fix test. * Add legacy language detection and compatibility for existing code. * Add doc. --------- Co-authored-by: Yong He --- tests/autodiff/bsdf/bsdf-auto-rev.slang | 3 +- tests/autodiff/bsdf/bsdf-sample.slang | 5 ++- tests/autodiff/cuda-kernel-export.slang | 2 +- tests/autodiff/material/DiffuseMaterial.slang | 8 ++-- .../material/DiffuseMaterialInstance.slang | 12 +++--- tests/autodiff/material/GlossyMaterial.slang | 8 ++-- .../autodiff/material/GlossyMaterialInstance.slang | 18 ++++----- tests/autodiff/material/IBSDF.slang | 4 +- tests/autodiff/material/IMaterial.slang | 6 +-- tests/autodiff/material/IMaterialInstance.slang | 4 +- tests/autodiff/material/MaterialSystem.slang | 2 +- tests/autodiff/material2/DiffuseMaterial.slang | 10 ++--- .../material2/DiffuseMaterialInstance.slang | 6 +-- tests/autodiff/material2/GlossyMaterial.slang | 14 +++---- .../material2/GlossyMaterialInstance.slang | 6 +-- tests/autodiff/material2/IBSDF.slang | 8 ++-- tests/autodiff/material2/IMaterial.slang | 6 +-- tests/autodiff/material2/IMaterialInstance.slang | 8 ++-- tests/autodiff/material2/MaterialSystem.slang | 2 +- tests/autodiff/material2/MxLayeredMaterial.slang | 32 ++++++++-------- .../material2/MxLayeredMaterialInstance.slang | 12 +++--- tests/autodiff/material2/MxWeights.slang | 14 +++---- tests/bindings/multi-file-defines.h | 3 +- tests/bindings/multi-file-shared.slang | 28 +++++++------- tests/bugs/gl-33-ext.slang | 6 +-- tests/bugs/interface-lvalue.slang | 2 +- tests/bugs/split-nested-types.slang | 14 +++---- tests/compute/array-existential-parameter.slang | 2 +- tests/compute/dynamic-dispatch-11.slang | 2 +- tests/compute/dynamic-dispatch-12.slang | 8 ++-- tests/compute/dynamic-dispatch-13.slang | 4 +- tests/compute/dynamic-dispatch-14.slang | 10 ++--- tests/compute/dynamic-dispatch-15.slang | 10 ++--- .../dynamic-dispatch-bindless-texture.slang | 2 +- tests/compute/interface-assoc-type-param.slang | 4 +- tests/compute/interface-func-param-in-struct.slang | 4 +- .../interface-param-partial-specialize.slang | 4 +- tests/cpu-program/class-com.slang | 6 +-- tests/cpu-program/class.slang | 4 +- tests/cpu-program/cpu-hello-world.slang | 2 +- tests/cpu-program/gfx-smoke.slang | 4 +- tests/cpu-program/pointer-basics.slang | 4 +- tests/cpu-program/pointer-deref.slang | 4 +- tests/current-bugs/resource-dynamic-dispatch.slang | 6 +-- tests/diagnostics/extension-visibility-a.slang | 12 +++--- tests/diagnostics/extension-visibility-b.slang | 4 +- tests/diagnostics/extension-visibility-c.slang | 2 +- .../extension-visibility.slang.expected | 6 +-- .../internal-visibility/that-module-impl.slang | 17 +++++++++ .../internal-visibility/that-module.slang | 25 ++++++++++++ .../internal-visibility/this-module.slang | 26 +++++++++++++ tests/diagnostics/private-visibility.slang | 44 ++++++++++++++++++++++ tests/diagnostics/visibility.slang | 23 +++++++++++ tests/front-end/import-exported-b.slang | 2 +- tests/front-end/import-subdir-search-path.slang | 2 +- tests/front-end/raw-string-literal.slang | 4 +- tests/front-end/subdir/import-subdir-a.slang | 2 +- tests/ir/string-literal-module.slang | 2 +- .../extensions/extension-import-helper.slang | 10 ++--- .../struct-generic-value-param-import.slang | 8 ++-- .../inheritance/struct-inheritance-imported.slang | 8 ++-- tests/library/library.slang | 4 +- tests/reflection/multi-file-defines.h | 3 +- tests/reflection/multi-file-shared.slang | 28 +++++++------- tests/reflection/reflect-imported-code.slang | 12 +++--- tests/vkray/callable-shared.slang | 6 +-- 66 files changed, 356 insertions(+), 217 deletions(-) create mode 100644 tests/diagnostics/internal-visibility/that-module-impl.slang create mode 100644 tests/diagnostics/internal-visibility/that-module.slang create mode 100644 tests/diagnostics/internal-visibility/this-module.slang create mode 100644 tests/diagnostics/private-visibility.slang create mode 100644 tests/diagnostics/visibility.slang (limited to 'tests') diff --git a/tests/autodiff/bsdf/bsdf-auto-rev.slang b/tests/autodiff/bsdf/bsdf-auto-rev.slang index cd31f2097..1bb1989bf 100644 --- a/tests/autodiff/bsdf/bsdf-auto-rev.slang +++ b/tests/autodiff/bsdf/bsdf-auto-rev.slang @@ -1,4 +1,5 @@ //TEST_IGNORE_FILE: +implementing "bsdf-sample"; struct ShadingData { @@ -103,4 +104,4 @@ float bsdfGGXPDF(in float3 hLocal, in Auto_Bwd_BSDFParameters params) float d = ((cosTheta * a2 - cosTheta) * cosTheta + 1); return (a2 / (d * d * 3.1415926)) * cosTheta; -} \ No newline at end of file +} diff --git a/tests/autodiff/bsdf/bsdf-sample.slang b/tests/autodiff/bsdf/bsdf-sample.slang index 8a9508791..9dfecf97e 100644 --- a/tests/autodiff/bsdf/bsdf-sample.slang +++ b/tests/autodiff/bsdf/bsdf-sample.slang @@ -2,9 +2,10 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type //TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer -RWStructuredBuffer outputBuffer; +module "bsdf-sample"; +__include bsdf_auto_rev; -__exported import bsdf_auto_rev; +RWStructuredBuffer outputBuffer; [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) diff --git a/tests/autodiff/cuda-kernel-export.slang b/tests/autodiff/cuda-kernel-export.slang index 928133c94..39815ede8 100644 --- a/tests/autodiff/cuda-kernel-export.slang +++ b/tests/autodiff/cuda-kernel-export.slang @@ -35,7 +35,7 @@ void myKernel(TensorView inValues, TensorView outValues) // TORCH: {{^SLANG_PRELUDE_EXPORT$}} // TORCH-NEXT: std::tuple, std::tuple>, std::tuple>>> runCompute(std::tuple input_[[#]]) [TorchEntryPoint] -public __extern_cpp MyType runCompute(MyInput input) +export __extern_cpp MyType runCompute(MyInput input) { MyType rs; var outValues = TorchTensor.alloc(1); diff --git a/tests/autodiff/material/DiffuseMaterial.slang b/tests/autodiff/material/DiffuseMaterial.slang index e762e17c8..3dd2927f5 100644 --- a/tests/autodiff/material/DiffuseMaterial.slang +++ b/tests/autodiff/material/DiffuseMaterial.slang @@ -3,13 +3,13 @@ __exported import IMaterial; __exported import DiffuseMaterialInstance; -struct DiffuseMaterial : IMaterial +public struct DiffuseMaterial : IMaterial { - float3 baseColor; + public float3 baseColor; - typedef DiffuseMaterialInstance MaterialInstance; + public typedef DiffuseMaterialInstance MaterialInstance; - DiffuseMaterialInstance setupMaterialInstance() + public DiffuseMaterialInstance setupMaterialInstance() { DiffuseMaterialInstance mi = { {baseColor} }; return mi; diff --git a/tests/autodiff/material/DiffuseMaterialInstance.slang b/tests/autodiff/material/DiffuseMaterialInstance.slang index ca6bfc69a..c6f0e315b 100644 --- a/tests/autodiff/material/DiffuseMaterialInstance.slang +++ b/tests/autodiff/material/DiffuseMaterialInstance.slang @@ -3,23 +3,23 @@ __exported import IMaterialInstance; __exported import IBSDF; -struct DiffuseBSDF : IBSDF +public struct DiffuseBSDF : IBSDF { - float3 albedo; + public float3 albedo; [TreatAsDifferentiable] - float3 eval(const float3 wiLocal, const float3 woLocal) + public float3 eval(const float3 wiLocal, const float3 woLocal) { return albedo; } }; -struct DiffuseMaterialInstance : IMaterialInstance +public struct DiffuseMaterialInstance : IMaterialInstance { - DiffuseBSDF bsdf; + public DiffuseBSDF bsdf; [TreatAsDifferentiable] - float3 eval(const float3 wi, const float3 wo) + public float3 eval(const float3 wi, const float3 wo) { return bsdf.eval(wi, wo); } diff --git a/tests/autodiff/material/GlossyMaterial.slang b/tests/autodiff/material/GlossyMaterial.slang index 59cee5afe..9848c82ed 100644 --- a/tests/autodiff/material/GlossyMaterial.slang +++ b/tests/autodiff/material/GlossyMaterial.slang @@ -3,13 +3,13 @@ __exported import IMaterial; __exported import GlossyMaterialInstance; -struct GlossyMaterial : IMaterial +public struct GlossyMaterial : IMaterial { - float3 baseColor; + public float3 baseColor; - typedef GlossyMaterialInstance MaterialInstance; + public typedef GlossyMaterialInstance MaterialInstance; - GlossyMaterialInstance setupMaterialInstance() + public GlossyMaterialInstance setupMaterialInstance() { GlossyMaterialInstance mi = { { baseColor } }; return mi; diff --git a/tests/autodiff/material/GlossyMaterialInstance.slang b/tests/autodiff/material/GlossyMaterialInstance.slang index fbbcc1a26..fb1ce55c0 100644 --- a/tests/autodiff/material/GlossyMaterialInstance.slang +++ b/tests/autodiff/material/GlossyMaterialInstance.slang @@ -3,44 +3,44 @@ __exported import IMaterialInstance; __exported import IBSDF; -struct GlossyBSDF : IBSDF +public struct GlossyBSDF : IBSDF { - float3 albedo; + public float3 albedo; - float3 getAlbedo() + public float3 getAlbedo() { return albedo; } [ForwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - DifferentialPair __fwd_d_getAlbedo() + public DifferentialPair __fwd_d_getAlbedo() { return diffPair(albedo, float3(1.f)); } [BackwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - void __bwd_d_getAlbedo(float3 dOut) + public void __bwd_d_getAlbedo(float3 dOut) { [unroll] for (int j = 0; j < 3; j++) outputBuffer[j + 3] += dOut[j]; } [BackwardDifferentiable] - float3 eval(const float3 wiLocal, const float3 woLocal) + public float3 eval(const float3 wiLocal, const float3 woLocal) { float3 a = getAlbedo(); return a * a; } }; -struct GlossyMaterialInstance : IMaterialInstance +public struct GlossyMaterialInstance : IMaterialInstance { - GlossyBSDF bsdf; + public GlossyBSDF bsdf; [BackwardDifferentiable] - float3 eval(const float3 wi, const float3 wo) + public float3 eval(const float3 wi, const float3 wo) { return bsdf.eval(wi, wo); } diff --git a/tests/autodiff/material/IBSDF.slang b/tests/autodiff/material/IBSDF.slang index 9bdeb9197..933392b80 100644 --- a/tests/autodiff/material/IBSDF.slang +++ b/tests/autodiff/material/IBSDF.slang @@ -1,9 +1,9 @@ //TEST_IGNORE_FILE: //TEST_INPUT:ubuffer(data=[0 0 0 0 0 0], stride=4):out,name=outputBuffer -RWStructuredBuffer outputBuffer; +public RWStructuredBuffer outputBuffer; -interface IBSDF +public interface IBSDF { [BackwardDifferentiable] float3 eval(const float3 wi, const float3 wo); diff --git a/tests/autodiff/material/IMaterial.slang b/tests/autodiff/material/IMaterial.slang index 4bdaac2bc..73390ba0e 100644 --- a/tests/autodiff/material/IMaterial.slang +++ b/tests/autodiff/material/IMaterial.slang @@ -2,9 +2,9 @@ __exported import IMaterialInstance; -interface IMaterial +public interface IMaterial { - associatedtype MaterialInstance : IMaterialInstance; + public associatedtype MaterialInstance : IMaterialInstance; - MaterialInstance setupMaterialInstance(); + public MaterialInstance setupMaterialInstance(); } diff --git a/tests/autodiff/material/IMaterialInstance.slang b/tests/autodiff/material/IMaterialInstance.slang index fb13f8982..4425c2c65 100644 --- a/tests/autodiff/material/IMaterialInstance.slang +++ b/tests/autodiff/material/IMaterialInstance.slang @@ -1,7 +1,7 @@ //TEST_IGNORE_FILE: -interface IMaterialInstance +public interface IMaterialInstance { [BackwardDifferentiable] - float3 eval(const float3 wi, const float3 wo); + public float3 eval(const float3 wi, const float3 wo); } diff --git a/tests/autodiff/material/MaterialSystem.slang b/tests/autodiff/material/MaterialSystem.slang index 5e733fad9..9fcee1386 100644 --- a/tests/autodiff/material/MaterialSystem.slang +++ b/tests/autodiff/material/MaterialSystem.slang @@ -2,7 +2,7 @@ __exported import IMaterial; -IMaterial createMaterialClassConformance(int type, float3 value) +public IMaterial createMaterialClassConformance(int type, float3 value) { return createDynamicObject(type, value); } diff --git a/tests/autodiff/material2/DiffuseMaterial.slang b/tests/autodiff/material2/DiffuseMaterial.slang index 721445249..d4ae579ff 100644 --- a/tests/autodiff/material2/DiffuseMaterial.slang +++ b/tests/autodiff/material2/DiffuseMaterial.slang @@ -3,20 +3,20 @@ __exported import IMaterial; __exported import DiffuseMaterialInstance; -struct DiffuseMaterial : IMaterial +public struct DiffuseMaterial : IMaterial { - float3 baseColor; + public float3 baseColor; - typedef DiffuseMaterialInstance MaterialInstance; + public typedef DiffuseMaterialInstance MaterialInstance; [TreatAsDifferentiable] - float3 getAlbedo(float3 albedo) + public float3 getAlbedo(float3 albedo) { return albedo; } [BackwardDifferentiable] - DiffuseMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) + public DiffuseMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) { float3 albedo = getAlbedo(baseColor); DiffuseMaterialInstance mi = { baseColor }; diff --git a/tests/autodiff/material2/DiffuseMaterialInstance.slang b/tests/autodiff/material2/DiffuseMaterialInstance.slang index e33e3f568..7f8421d9f 100644 --- a/tests/autodiff/material2/DiffuseMaterialInstance.slang +++ b/tests/autodiff/material2/DiffuseMaterialInstance.slang @@ -3,12 +3,12 @@ __exported import IMaterialInstance; __exported import IBSDF; -struct DiffuseMaterialInstance : IMaterialInstance +public struct DiffuseMaterialInstance : IMaterialInstance { - float3 albedo; + public float3 albedo; [BackwardDifferentiable] - float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) + public float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) { float3 albedo; for (uint i = 0; i < 3; i++) albedo[i] = miData.data[i]; diff --git a/tests/autodiff/material2/GlossyMaterial.slang b/tests/autodiff/material2/GlossyMaterial.slang index 34ade54cb..e937443d4 100644 --- a/tests/autodiff/material2/GlossyMaterial.slang +++ b/tests/autodiff/material2/GlossyMaterial.slang @@ -3,34 +3,34 @@ __exported import IMaterial; __exported import GlossyMaterialInstance; -struct GlossyMaterial : IMaterial +public struct GlossyMaterial : IMaterial { - float3 baseColor; + public float3 baseColor; - typedef GlossyMaterialInstance MaterialInstance; + public typedef GlossyMaterialInstance MaterialInstance; - float3 getAlbedo(float3 albedo) + public float3 getAlbedo(float3 albedo) { return albedo; } [ForwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - DifferentialPair __fwd_d_getAlbedo(DifferentialPair dpAlbedo) + public DifferentialPair __fwd_d_getAlbedo(DifferentialPair dpAlbedo) { return diffPair(dpAlbedo.p, float3(1.f)); } [BackwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - void __bwd_d_getAlbedo(inout DifferentialPair dpAlbedo, float3 dOut) + public void __bwd_d_getAlbedo(inout DifferentialPair dpAlbedo, float3 dOut) { [unroll] for (int j = 0; j < 3; j++) outputBuffer[j + 3] += dOut[j]; } [BackwardDifferentiable] - GlossyMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) + public GlossyMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) { float3 albedo = getAlbedo(baseColor); GlossyMaterialInstance mi = { baseColor }; diff --git a/tests/autodiff/material2/GlossyMaterialInstance.slang b/tests/autodiff/material2/GlossyMaterialInstance.slang index 3cef458ff..64973a5ea 100644 --- a/tests/autodiff/material2/GlossyMaterialInstance.slang +++ b/tests/autodiff/material2/GlossyMaterialInstance.slang @@ -3,12 +3,12 @@ __exported import IMaterialInstance; __exported import IBSDF; -struct GlossyMaterialInstance : IMaterialInstance +public struct GlossyMaterialInstance : IMaterialInstance { - float3 albedo; + public float3 albedo; [BackwardDifferentiable] - float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) + public float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) { float3 albedo = float3(0.0f, 0.0f, 0.0f); for (uint i = 0; i < 3; i++) albedo[i] = miData.data[i]; diff --git a/tests/autodiff/material2/IBSDF.slang b/tests/autodiff/material2/IBSDF.slang index 57cff2883..49bfde6e7 100644 --- a/tests/autodiff/material2/IBSDF.slang +++ b/tests/autodiff/material2/IBSDF.slang @@ -1,10 +1,10 @@ //TEST_IGNORE_FILE: -//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer -RWStructuredBuffer outputBuffer; +// TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer +public RWStructuredBuffer outputBuffer; -interface IBSDF +public interface IBSDF { [BackwardDifferentiable] - float3 eval(const float3 wi, const float3 wo); + public float3 eval(const float3 wi, const float3 wo); } diff --git a/tests/autodiff/material2/IMaterial.slang b/tests/autodiff/material2/IMaterial.slang index 66780c9ff..cefb69393 100644 --- a/tests/autodiff/material2/IMaterial.slang +++ b/tests/autodiff/material2/IMaterial.slang @@ -2,10 +2,10 @@ __exported import IMaterialInstance; -interface IMaterial +public interface IMaterial { - associatedtype MaterialInstance : IMaterialInstance; + public associatedtype MaterialInstance : IMaterialInstance; [BackwardDifferentiable] - MaterialInstance setupMaterialInstance(out MaterialInstanceData miData); + public MaterialInstance setupMaterialInstance(out MaterialInstanceData miData); } diff --git a/tests/autodiff/material2/IMaterialInstance.slang b/tests/autodiff/material2/IMaterialInstance.slang index ddf5ca0f6..6b6b617b5 100644 --- a/tests/autodiff/material2/IMaterialInstance.slang +++ b/tests/autodiff/material2/IMaterialInstance.slang @@ -1,8 +1,8 @@ //TEST_IGNORE_FILE: -struct MaterialInstanceData : IDifferentiable +public struct MaterialInstanceData : IDifferentiable { - float data[5]; + public float data[5]; } /* @@ -13,8 +13,8 @@ struct MaterialInstanceSetupResult : IDifferentiable } */ -interface IMaterialInstance +public interface IMaterialInstance { [BackwardDifferentiable] - float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo); + public float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo); } diff --git a/tests/autodiff/material2/MaterialSystem.slang b/tests/autodiff/material2/MaterialSystem.slang index 5e733fad9..9fcee1386 100644 --- a/tests/autodiff/material2/MaterialSystem.slang +++ b/tests/autodiff/material2/MaterialSystem.slang @@ -2,7 +2,7 @@ __exported import IMaterial; -IMaterial createMaterialClassConformance(int type, float3 value) +public IMaterial createMaterialClassConformance(int type, float3 value) { return createDynamicObject(type, value); } diff --git a/tests/autodiff/material2/MxLayeredMaterial.slang b/tests/autodiff/material2/MxLayeredMaterial.slang index 5e2717b60..8c5cd6d3c 100644 --- a/tests/autodiff/material2/MxLayeredMaterial.slang +++ b/tests/autodiff/material2/MxLayeredMaterial.slang @@ -5,54 +5,54 @@ __exported import IMaterialInstance; import MxLayeredMaterialInstance; import MxWeights; -struct LayeredData_mixedLobes : IMxLayeredMaterialData +public struct LayeredData_mixedLobes : IMxLayeredMaterialData { - static const int bsdfCount = 3; - static const int layerCount = 1; + public static const int bsdfCount = 3; + public static const int layerCount = 1; - int getBsdfCount() { return bsdfCount; } - int getLayerCount() { return layerCount; } + public int getBsdfCount() { return bsdfCount; } + public int getLayerCount() { return layerCount; } } #define TMxLayeredMaterialData LayeredData_mixedLobes -struct Layered_mixedLobes_WeightsCalculator : IMxLayeredWeightCalculator +public struct Layered_mixedLobes_WeightsCalculator : IMxLayeredWeightCalculator { - void calculateWeights( + public void calculateWeights( const TLayeredMaterialData data, out MxWeights weights) { for (uint i = 0; i < TBsdfCount; i++) weights.weights[i] = float3(0.f); } } -struct MxLayeredMaterial : IMaterial +public struct MxLayeredMaterial : IMaterial { - float3 baseColor; + public float3 baseColor; - typealias UsedMaterialInstance = MxLayeredMaterialInstance<3, 1, TMxLayeredMaterialData, Layered_mixedLobes_WeightsCalculator>; - typedef UsedMaterialInstance MaterialInstance; + public typealias UsedMaterialInstance = MxLayeredMaterialInstance<3, 1, TMxLayeredMaterialData, Layered_mixedLobes_WeightsCalculator>; + public typedef UsedMaterialInstance MaterialInstance; - float3 getAlbedo(float3 albedo) + public float3 getAlbedo(float3 albedo) { return albedo; } [ForwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - DifferentialPair __fwd_d_getAlbedo(DifferentialPair dpAlbedo) + public DifferentialPair __fwd_d_getAlbedo(DifferentialPair dpAlbedo) { return diffPair(dpAlbedo.p, float3(1.f)); } [BackwardDerivativeOf(getAlbedo)] [TreatAsDifferentiable] - void __bwd_d_getAlbedo(inout DifferentialPair dpAlbedo, float3 dOut) + public void __bwd_d_getAlbedo(inout DifferentialPair dpAlbedo, float3 dOut) { [unroll] for (int j = 0; j < 3; j++) outputBuffer[j + 6] += dOut[j]; } - + [Differentiable] - UsedMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) + public UsedMaterialInstance setupMaterialInstance(out MaterialInstanceData miData) { float3 albedo = getAlbedo(baseColor); UsedMaterialInstance mi; diff --git a/tests/autodiff/material2/MxLayeredMaterialInstance.slang b/tests/autodiff/material2/MxLayeredMaterialInstance.slang index 53a319d6f..ed2ef1cb0 100644 --- a/tests/autodiff/material2/MxLayeredMaterialInstance.slang +++ b/tests/autodiff/material2/MxLayeredMaterialInstance.slang @@ -5,17 +5,17 @@ __exported import IBSDF; import MxWeights; -struct MxLayeredMaterialInstance< +public struct MxLayeredMaterialInstance< let TBsdfCount : int, let TLayerCount : int, TLayeredMaterialData : IMxLayeredMaterialData, TWeightsCalc : IMxLayeredWeightCalculator> : IMaterialInstance { - TLayeredMaterialData data; - TWeightsCalc calculator; - typealias Weights = MxWeights; + public TLayeredMaterialData data; + public TWeightsCalc calculator; + public typealias Weights = MxWeights; - Weights calculateWeights() + public Weights calculateWeights() { Weights result; calculator.calculateWeights(data, result); @@ -23,7 +23,7 @@ struct MxLayeredMaterialInstance< } [Differentiable] - float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) + public float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) { float3 albedo; for (uint i = 0; i < 3; i++) albedo[i] = miData.data[i]; diff --git a/tests/autodiff/material2/MxWeights.slang b/tests/autodiff/material2/MxWeights.slang index 1d1a9f543..1e9c7d36c 100644 --- a/tests/autodiff/material2/MxWeights.slang +++ b/tests/autodiff/material2/MxWeights.slang @@ -1,18 +1,18 @@ //TEST_IGNORE_FILE: -struct MxWeights +public struct MxWeights { - float3 weights[TBsdfCount]; + public float3 weights[TBsdfCount]; } -interface IMxLayeredMaterialData +public interface IMxLayeredMaterialData { - int getBsdfCount(); - int getLayerCount(); + public int getBsdfCount(); + public int getLayerCount(); } -interface IMxLayeredWeightCalculator +public interface IMxLayeredWeightCalculator { - void calculateWeights( + public void calculateWeights( const TLayeredMaterialData data, out MxWeights weights); } diff --git a/tests/bindings/multi-file-defines.h b/tests/bindings/multi-file-defines.h index 52a5826b6..db0261158 100644 --- a/tests/bindings/multi-file-defines.h +++ b/tests/bindings/multi-file-defines.h @@ -5,12 +5,13 @@ #define BEGIN_CBUFFER(NAME) cbuffer NAME #define END_CBUFFER(NAME, REG) /**/ #define CBUFFER_REF(NAME, FIELD) FIELD +#define PUBLIC public #else #define R(X) X #define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME #define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } #define CBUFFER_REF(NAME, FIELD) NAME.FIELD - +#define PUBLIC #define sharedC sharedC_0 #define sharedCA sharedCA_0 #define sharedCB sharedCB_0 diff --git a/tests/bindings/multi-file-shared.slang b/tests/bindings/multi-file-shared.slang index af91d5251..dcfa6251c 100644 --- a/tests/bindings/multi-file-shared.slang +++ b/tests/bindings/multi-file-shared.slang @@ -3,23 +3,23 @@ #include "multi-file-defines.h" -float4 use(float val) { return val; }; -float4 use(float2 val) { return float4(val,0.0,0.0); }; -float4 use(float3 val) { return float4(val,0.0); }; -float4 use(float4 val) { return val; }; -float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); } +PUBLIC float4 use(float val) { return val; }; +PUBLIC float4 use(float2 val) { return float4(val,0.0,0.0); }; +PUBLIC float4 use(float3 val) { return float4(val,0.0); }; +PUBLIC float4 use(float4 val) { return val; }; +PUBLIC float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); } -Texture2D sharedT R(: register(t2)); -SamplerState sharedS R(: register(s2)); +PUBLIC Texture2D sharedT R(: register(t2)); +PUBLIC SamplerState sharedS R(: register(s2)); -BEGIN_CBUFFER(sharedC) +PUBLIC BEGIN_CBUFFER(sharedC) { - float3 sharedCA; - float sharedCB; - float3 sharedCC; - float2 sharedCD; + PUBLIC float3 sharedCA; + PUBLIC float sharedCB; + PUBLIC float3 sharedCC; + PUBLIC float2 sharedCD; } END_CBUFFER(sharedC, register(b2)) -Texture2D sharedTV R(: register(t3)); -Texture2D sharedTF R(: register(t4)); +PUBLIC Texture2D sharedTV R(: register(t3)); +PUBLIC Texture2D sharedTF R(: register(t4)); diff --git a/tests/bugs/gl-33-ext.slang b/tests/bugs/gl-33-ext.slang index ae70cfaf0..fccde99a3 100644 --- a/tests/bugs/gl-33-ext.slang +++ b/tests/bugs/gl-33-ext.slang @@ -1,8 +1,8 @@ // gl-33-ext.slang //TEST_IGNORE_FILE: -struct A +public struct A { - int state; - [mutating] int next() { return state; } + public int state; + [mutating] public int next() { return state; } }; diff --git a/tests/bugs/interface-lvalue.slang b/tests/bugs/interface-lvalue.slang index 87cfa54ed..e80a130d1 100644 --- a/tests/bugs/interface-lvalue.slang +++ b/tests/bugs/interface-lvalue.slang @@ -23,7 +23,7 @@ void createFoo(out IFoo val) val = resuult; } -public __extern_cpp int main() +export __extern_cpp int main() { IFoo v; createFoo(v); diff --git a/tests/bugs/split-nested-types.slang b/tests/bugs/split-nested-types.slang index 3bd4e239f..b9bfb9e62 100644 --- a/tests/bugs/split-nested-types.slang +++ b/tests/bugs/split-nested-types.slang @@ -1,14 +1,14 @@ //TEST_IGNORE_FILE: -struct A { int x; }; +public struct A { public int x; }; -struct B { float y; }; +public struct B { public float y; }; -struct CC { Texture2D t; SamplerState s; }; +public struct CC { public Texture2D t; public SamplerState s; }; -struct M +public struct M { - A a; - B b; - CC c; + public A a; + public B b; + public CC c; }; diff --git a/tests/compute/array-existential-parameter.slang b/tests/compute/array-existential-parameter.slang index 813c5a40b..b7473e447 100644 --- a/tests/compute/array-existential-parameter.slang +++ b/tests/compute/array-existential-parameter.slang @@ -38,7 +38,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) //TEST_INPUT: globalExistentialType __Dynamic // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { int val; int run(int input) diff --git a/tests/compute/dynamic-dispatch-11.slang b/tests/compute/dynamic-dispatch-11.slang index d6f64aa99..59e7ce581 100644 --- a/tests/compute/dynamic-dispatch-11.slang +++ b/tests/compute/dynamic-dispatch-11.slang @@ -34,7 +34,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) // No type input for dynamic dispatch //TEST_INPUT: globalExistentialType MyImpl // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { int val; int run(int input) diff --git a/tests/compute/dynamic-dispatch-12.slang b/tests/compute/dynamic-dispatch-12.slang index 906a5da0e..28f9c4c14 100644 --- a/tests/compute/dynamic-dispatch-12.slang +++ b/tests/compute/dynamic-dispatch-12.slang @@ -37,14 +37,14 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) } // Specialize gCb1, but not gCb2 -//TEST_INPUT: globalExistentialType MyImpl -//TEST_INPUT: globalExistentialType __Dynamic +// TEST_INPUT: globalExistentialType MyImpl +// TEST_INPUT: globalExistentialType __Dynamic // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { int val; int run(int input) { return input + val; } -}; \ No newline at end of file +}; diff --git a/tests/compute/dynamic-dispatch-13.slang b/tests/compute/dynamic-dispatch-13.slang index f9ad9683b..20d78e0ad 100644 --- a/tests/compute/dynamic-dispatch-13.slang +++ b/tests/compute/dynamic-dispatch-13.slang @@ -35,7 +35,7 @@ void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) } // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { int val; int run(int input) @@ -43,7 +43,7 @@ public struct MyImpl : IInterface return input + val; } }; -public struct MyImpl2 : IInterface +export struct MyImpl2 : IInterface { int val; int run(int input) diff --git a/tests/compute/dynamic-dispatch-14.slang b/tests/compute/dynamic-dispatch-14.slang index e605132c6..0dc99b432 100644 --- a/tests/compute/dynamic-dispatch-14.slang +++ b/tests/compute/dynamic-dispatch-14.slang @@ -46,10 +46,10 @@ void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) } // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { int val; - public struct TAssoc : IAssoc + export struct TAssoc : IAssoc { int val; int eval() { return val; } @@ -62,10 +62,10 @@ public struct MyImpl : IInterface } }; -public struct MyImpl2 : IInterface +export struct MyImpl2 : IInterface { int val; - public struct TAssoc : IAssoc + export struct TAssoc : IAssoc { int val; int eval() { return val; } @@ -76,4 +76,4 @@ public struct MyImpl2 : IInterface rs.val = input - val; return rs; } -}; \ No newline at end of file +}; diff --git a/tests/compute/dynamic-dispatch-15.slang b/tests/compute/dynamic-dispatch-15.slang index 5e2be1a4c..2ab169281 100644 --- a/tests/compute/dynamic-dispatch-15.slang +++ b/tests/compute/dynamic-dispatch-15.slang @@ -46,7 +46,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) } // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct FloatVal : IInterface +export struct FloatVal : IInterface { float val; float run() @@ -56,7 +56,7 @@ public struct FloatVal : IInterface }; interface ISomething{void g();} struct Float4Struct : ISomething { float4 val; void g() {} } -public struct Float4Val : IInterface +export struct Float4Val : IInterface { Float4Struct val; float run() @@ -64,7 +64,7 @@ public struct Float4Val : IInterface return val.val.x; } }; -public struct IntVal : IInterface +export struct IntVal : IInterface { int val; float run() @@ -72,11 +72,11 @@ public struct IntVal : IInterface return val; } }; -public struct Int4Val : IInterface +export struct Int4Val : IInterface { int4 val; float run() { return val.x; } -}; \ No newline at end of file +}; diff --git a/tests/compute/dynamic-dispatch-bindless-texture.slang b/tests/compute/dynamic-dispatch-bindless-texture.slang index 04c1f1766..34ef67d1e 100644 --- a/tests/compute/dynamic-dispatch-bindless-texture.slang +++ b/tests/compute/dynamic-dispatch-bindless-texture.slang @@ -28,7 +28,7 @@ void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) //TEST_INPUT: globalExistentialType __Dynamic // Type must be marked `public` to ensure it is visible in the generated DLL. -public struct MyImpl : IInterface +export struct MyImpl : IInterface { Texture2D tex; SamplerState sampler; diff --git a/tests/compute/interface-assoc-type-param.slang b/tests/compute/interface-assoc-type-param.slang index 805f673a2..a234d457f 100644 --- a/tests/compute/interface-assoc-type-param.slang +++ b/tests/compute/interface-assoc-type-param.slang @@ -16,7 +16,7 @@ interface IEval uint eval(); } -public struct Impl : IInterface +export struct Impl : IInterface { uint val; struct TEval : IEval @@ -55,4 +55,4 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID, { uint tid = dispatchThreadID.x; compute(tid, params); -} \ No newline at end of file +} diff --git a/tests/compute/interface-func-param-in-struct.slang b/tests/compute/interface-func-param-in-struct.slang index c47b25d70..01e4aa111 100644 --- a/tests/compute/interface-func-param-in-struct.slang +++ b/tests/compute/interface-func-param-in-struct.slang @@ -9,7 +9,7 @@ interface IInterface uint eval(); } -public struct Impl : IInterface +export struct Impl : IInterface { uint val; uint eval() @@ -38,4 +38,4 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID, { uint tid = dispatchThreadID.x; compute(tid, params); -} \ No newline at end of file +} diff --git a/tests/compute/interface-param-partial-specialize.slang b/tests/compute/interface-param-partial-specialize.slang index 9be22c6c4..1d09c9f55 100644 --- a/tests/compute/interface-param-partial-specialize.slang +++ b/tests/compute/interface-param-partial-specialize.slang @@ -12,7 +12,7 @@ interface IInterface uint eval(); } -public struct Impl : IInterface +export struct Impl : IInterface { uint val; uint eval() @@ -48,4 +48,4 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID, { uint tid = dispatchThreadID.x; compute(tid, params); -} \ No newline at end of file +} diff --git a/tests/cpu-program/class-com.slang b/tests/cpu-program/class-com.slang index e2812f586..2dd84d696 100644 --- a/tests/cpu-program/class-com.slang +++ b/tests/cpu-program/class-com.slang @@ -20,7 +20,7 @@ class MyClass : IFoo }; [DllExport] -IFoo createFoo() +export IFoo createFoo() { IFoo result = new MyClass(); return result; @@ -30,8 +30,8 @@ IFoo createFoo() [DllImport("", "createFoo")] IFoo createFooImported(); -public __extern_cpp int main() +export __extern_cpp int main() { var obj = createFooImported(); return obj.method(); -} \ No newline at end of file +} diff --git a/tests/cpu-program/class.slang b/tests/cpu-program/class.slang index 1a510118a..8935b157a 100644 --- a/tests/cpu-program/class.slang +++ b/tests/cpu-program/class.slang @@ -13,8 +13,8 @@ class MyClass } } -public __extern_cpp int main() +export __extern_cpp int main() { MyClass obj = new MyClass(); return obj.method(); -} \ No newline at end of file +} diff --git a/tests/cpu-program/cpu-hello-world.slang b/tests/cpu-program/cpu-hello-world.slang index f1285f889..a44761e8f 100644 --- a/tests/cpu-program/cpu-hello-world.slang +++ b/tests/cpu-program/cpu-hello-world.slang @@ -1,6 +1,6 @@ //TEST:EXECUTABLE: -public __extern_cpp int main() +export __extern_cpp int main() { printf("Hello World.\n"); return 0; diff --git a/tests/cpu-program/gfx-smoke.slang b/tests/cpu-program/gfx-smoke.slang index d0acb83db..41c87ca19 100644 --- a/tests/cpu-program/gfx-smoke.slang +++ b/tests/cpu-program/gfx-smoke.slang @@ -2,7 +2,7 @@ import gfx; import slang; -public __extern_cpp int main() +export __extern_cpp int main() { gfx.DeviceDesc deviceDesc = {}; deviceDesc.deviceType = gfx.DeviceType.CPU; @@ -98,4 +98,4 @@ public __extern_cpp int main() printf("%.1f\n", val); } return 0; -} \ No newline at end of file +} diff --git a/tests/cpu-program/pointer-basics.slang b/tests/cpu-program/pointer-basics.slang index e38d866eb..db705d507 100644 --- a/tests/cpu-program/pointer-basics.slang +++ b/tests/cpu-program/pointer-basics.slang @@ -1,5 +1,5 @@ //TEST:EXECUTABLE: -public __extern_cpp int main() +export __extern_cpp int main() { uint2 value; int *pValue = (int*)&value; @@ -20,4 +20,4 @@ public __extern_cpp int main() else printf("Fail\n"); return 0; -} \ No newline at end of file +} diff --git a/tests/cpu-program/pointer-deref.slang b/tests/cpu-program/pointer-deref.slang index 79f1b2cd0..f5bad5b09 100644 --- a/tests/cpu-program/pointer-deref.slang +++ b/tests/cpu-program/pointer-deref.slang @@ -11,7 +11,7 @@ struct Record SubRecord sub; } -public __extern_cpp int main() +export __extern_cpp int main() { Record rec; Record *pRec = &rec; @@ -27,4 +27,4 @@ public __extern_cpp int main() printf("fail\n"); } return 0; -} \ No newline at end of file +} diff --git a/tests/current-bugs/resource-dynamic-dispatch.slang b/tests/current-bugs/resource-dynamic-dispatch.slang index 0a987b1cf..f344448dd 100644 --- a/tests/current-bugs/resource-dynamic-dispatch.slang +++ b/tests/current-bugs/resource-dynamic-dispatch.slang @@ -26,13 +26,13 @@ interface IInterface }; // Need public to make these conformances available -public struct A : IInterface +export struct A : IInterface { typedef SomeData Type; IGetTexture getType() { Type t = { gTexA }; return t; } }; -public struct B : IInterface +export struct B : IInterface { typedef SomeData Type; IGetTexture getType() { Type t = { gTexB }; return t; } @@ -64,4 +64,4 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) let tex = getTex.getTexture(); outputBuffer[tid] = tex.Load(int3(tid, tid, 0)); -} \ No newline at end of file +} diff --git a/tests/diagnostics/extension-visibility-a.slang b/tests/diagnostics/extension-visibility-a.slang index 97e4ef85c..162320d51 100644 --- a/tests/diagnostics/extension-visibility-a.slang +++ b/tests/diagnostics/extension-visibility-a.slang @@ -1,17 +1,17 @@ // extension-visibility-a.slang -interface IThing +public interface IThing { - int getValue(); + public int getValue(); } // Note: not implementing the interface here! -struct MyThing +public struct MyThing { - int value; + public int value; } -int helper(T thing) +public int helper(T thing) { return thing.getValue(); -} \ No newline at end of file +} diff --git a/tests/diagnostics/extension-visibility-b.slang b/tests/diagnostics/extension-visibility-b.slang index 7848f2a56..dbefe66e7 100644 --- a/tests/diagnostics/extension-visibility-b.slang +++ b/tests/diagnostics/extension-visibility-b.slang @@ -2,7 +2,7 @@ import extension_visibility_a; -extension MyThing : IThing +public extension MyThing : IThing { - int getValue() { return value; } + public int getValue() { return value; } } diff --git a/tests/diagnostics/extension-visibility-c.slang b/tests/diagnostics/extension-visibility-c.slang index 2d7a5224d..71680b31e 100644 --- a/tests/diagnostics/extension-visibility-c.slang +++ b/tests/diagnostics/extension-visibility-c.slang @@ -3,7 +3,7 @@ import extension_visibility_a; import extension_visibility_b; -int works(MyThing thing) +public int works(MyThing thing) { return helper(thing); } diff --git a/tests/diagnostics/extension-visibility.slang.expected b/tests/diagnostics/extension-visibility.slang.expected index 732ff4189..eed86715d 100644 --- a/tests/diagnostics/extension-visibility.slang.expected +++ b/tests/diagnostics/extension-visibility.slang.expected @@ -3,9 +3,9 @@ standard error = { tests/diagnostics/extension-visibility.slang(17): error 39999: could not specialize generic for arguments of type (MyThing) return helper(thing); ^ -tests/diagnostics/extension-visibility-a.slang(14): note 39999: see declaration of func helper(T) -> int -int helper(T thing) - ^~~~~~ +tests/diagnostics/extension-visibility-a.slang(14): note 39999: see declaration of public func helper(T) -> int +public int helper(T thing) + ^~~~~~ } standard output = { } diff --git a/tests/diagnostics/internal-visibility/that-module-impl.slang b/tests/diagnostics/internal-visibility/that-module-impl.slang new file mode 100644 index 000000000..893510afe --- /dev/null +++ b/tests/diagnostics/internal-visibility/that-module-impl.slang @@ -0,0 +1,17 @@ +implementing "that-module"; + + +public void publicFunc2() { } + +internal void internalFunc1() {} + +public struct PublicStruct +{ + int x; + public int y; +} + +public namespace Namespace +{ + public static int publicVar2; +} diff --git a/tests/diagnostics/internal-visibility/that-module.slang b/tests/diagnostics/internal-visibility/that-module.slang new file mode 100644 index 000000000..b072c7231 --- /dev/null +++ b/tests/diagnostics/internal-visibility/that-module.slang @@ -0,0 +1,25 @@ +module "that-module"; + +__include "that-module-impl"; + +void internalMethod(); + +public void publicMethod(); + +public namespace Namespace +{ + static int internalVar; + + public static int publicVar; +} + +enum InternalEnum +{ + A,B,C +} +public enum PublicEnum +{ + D,E,F +} + +struct InternalStruct { int x; } diff --git a/tests/diagnostics/internal-visibility/this-module.slang b/tests/diagnostics/internal-visibility/this-module.slang new file mode 100644 index 000000000..98e0f3d08 --- /dev/null +++ b/tests/diagnostics/internal-visibility/this-module.slang @@ -0,0 +1,26 @@ +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): + +module "this-module"; + +import "that-module"; + +void test() +{ + PublicStruct s; + // CHECK:{{.*}}(11): error 30600: + s.x = 1; // Error. + // CHECK-NOT:{{.*}}error + s.y = 2; // OK. + publicMethod(); // OK. + publicFunc2(); // OK. + Namespace.publicVar = 1; // OK. + Namespace.publicVar2 = 1; // OK. + // CHECK:{{.*}}(19): error 30600: + Namespace.internalVar = 1; // error. + // CHECK:{{.*}}(21): error 30600: + InternalEnum e; // Error. + // CHECK:{{.*}}(23): error 30600: + InternalStruct s1; // Error. + // CHECK:{{.*}}(25): error 30600: + internalMethod(); // Error. +} diff --git a/tests/diagnostics/private-visibility.slang b/tests/diagnostics/private-visibility.slang new file mode 100644 index 000000000..7c0bad970 --- /dev/null +++ b/tests/diagnostics/private-visibility.slang @@ -0,0 +1,44 @@ +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): + +struct MyType +{ + private int member; + private int func() + { + return member; + } + struct SubType + { + int member2; + int func2(MyType m) + { + return m.member + member2; // OK. + } + } + int func1() { return member; } + + private __init() { member = 0; } + + private __subscript(int i)->int + { + get { return member; } + set { member = newValue; } + } + // CHECK:{{.*}}(28): error 30601: + public void publicMethod() {} // ERROR. +} + +void test() +{ + // CHECK:{{.*}}(34): error 30600: + MyType t; // ERROR. + // CHECK-NOT:{{.*}}error + t.func1(); // OK. + // CHECK:{{.*}}(38): error 30600: + t.func(); // ERROR. + // CHECK:{{.*}}(40): error 30600: + t[0] = 1; // ERROR. + + // CHECK:{{.*}}(43): error 30600: + t.member = 2; +} diff --git a/tests/diagnostics/visibility.slang b/tests/diagnostics/visibility.slang new file mode 100644 index 000000000..724ec30e7 --- /dev/null +++ b/tests/diagnostics/visibility.slang @@ -0,0 +1,23 @@ +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): + +// CHECK-DAG:{{.*}}(4): error 30603 +private struct MyStruct +{} + +struct IS +{ + // CHECK-DAG:{{.*}}(10): error 30601 + public void fp(); +} + +// CHECK-DAG:{{.*}}(14): error 30604 +public IS f() {} + +public struct PS +{ + // CHECK-DAG:{{.*}}(19): error 30604 + public IS ii; + + // CHECK-DAG:{{.*}}(22): error 30604 + public property IS ii2 { get { return {}; } }; +} diff --git a/tests/front-end/import-exported-b.slang b/tests/front-end/import-exported-b.slang index 144f62060..e7bc49510 100644 --- a/tests/front-end/import-exported-b.slang +++ b/tests/front-end/import-exported-b.slang @@ -2,4 +2,4 @@ // This file defines the code that will be (transitively) imported into `import-exported.slang` -float foo(float x) { return x; } \ No newline at end of file +public float foo(float x) { return x; } diff --git a/tests/front-end/import-subdir-search-path.slang b/tests/front-end/import-subdir-search-path.slang index 9b7c7a520..b35802f14 100644 --- a/tests/front-end/import-subdir-search-path.slang +++ b/tests/front-end/import-subdir-search-path.slang @@ -7,4 +7,4 @@ __import import_subdir_a; // Should realize it's the same thing __import subdir.import_subdir_a; -float bar(float x) { return foo(x); } \ No newline at end of file +float bar(float x) { return foo(x); } diff --git a/tests/front-end/raw-string-literal.slang b/tests/front-end/raw-string-literal.slang index 321f183c7..7297c27e1 100644 --- a/tests/front-end/raw-string-literal.slang +++ b/tests/front-end/raw-string-literal.slang @@ -17,7 +17,7 @@ void printLines(NativeString text) } } -public __extern_cpp int main() +export __extern_cpp int main() { printLines( R"(This is line 1. @@ -25,4 +25,4 @@ public __extern_cpp int main() "Hello World" )"); return 0; -} \ No newline at end of file +} diff --git a/tests/front-end/subdir/import-subdir-a.slang b/tests/front-end/subdir/import-subdir-a.slang index 3962d4662..e973d5cbf 100644 --- a/tests/front-end/subdir/import-subdir-a.slang +++ b/tests/front-end/subdir/import-subdir-a.slang @@ -2,4 +2,4 @@ // This is the imported code. -float foo(float x) { return x; } \ No newline at end of file +public float foo(float x) { return x; } diff --git a/tests/ir/string-literal-module.slang b/tests/ir/string-literal-module.slang index 96fb62088..245b4b3a2 100644 --- a/tests/ir/string-literal-module.slang +++ b/tests/ir/string-literal-module.slang @@ -1,6 +1,6 @@ //TEST_IGNORE_FILE: -int doSomethingElse() +public int doSomethingElse() { return getStringHash("Try another"); } diff --git a/tests/language-feature/extensions/extension-import-helper.slang b/tests/language-feature/extensions/extension-import-helper.slang index c1a652645..11265762a 100644 --- a/tests/language-feature/extensions/extension-import-helper.slang +++ b/tests/language-feature/extensions/extension-import-helper.slang @@ -2,12 +2,12 @@ //TEST_IGNORE_FILE: -interface IThing +public interface IThing { - float getValue(); + public float getValue(); } -extension float : IThing +public extension float : IThing { - float getValue() { return this; } -} \ No newline at end of file + public float getValue() { return this; } +} diff --git a/tests/language-feature/generics/struct-generic-value-param-import.slang b/tests/language-feature/generics/struct-generic-value-param-import.slang index edc1b0c39..785b8146f 100644 --- a/tests/language-feature/generics/struct-generic-value-param-import.slang +++ b/tests/language-feature/generics/struct-generic-value-param-import.slang @@ -6,13 +6,13 @@ // for `struct` decalrations in Slang files, including // any `import`ed code. -interface IData {} +public interface IData {} -struct Data : IData +public struct Data : IData { - int state; + public int state; - [mutating] void doStuff() + [mutating] public void doStuff() { state++; } diff --git a/tests/language-feature/inheritance/struct-inheritance-imported.slang b/tests/language-feature/inheritance/struct-inheritance-imported.slang index 8786b851c..16816ec97 100644 --- a/tests/language-feature/inheritance/struct-inheritance-imported.slang +++ b/tests/language-feature/inheritance/struct-inheritance-imported.slang @@ -1,12 +1,12 @@ //TEST_IGNORE_FILE: // struct-inheritance-imported.slang -struct Base +public struct Base { - int a; + public int a; } -struct Derived : Base +public struct Derived : Base {} -int getA(Derived d) { return d.a; } +public int getA(Derived d) { return d.a; } diff --git a/tests/library/library.slang b/tests/library/library.slang index fafb1018c..3deaeab99 100644 --- a/tests/library/library.slang +++ b/tests/library/library.slang @@ -2,12 +2,12 @@ // library.slang -int doThing(int b) +export int doThing(int b) { return b + b + 1; } -public int foo(int a) +public export int foo(int a) { return a * a + 1 + doThing(a + 2); } diff --git a/tests/reflection/multi-file-defines.h b/tests/reflection/multi-file-defines.h index aed4c510a..0948df378 100644 --- a/tests/reflection/multi-file-defines.h +++ b/tests/reflection/multi-file-defines.h @@ -5,12 +5,13 @@ #define BEGIN_CBUFFER(NAME) cbuffer NAME #define END_CBUFFER(NAME, REG) /**/ #define CBUFFER_REF(NAME, FIELD) FIELD +#define PUBLIC public #else #define R(X) /*X*/ #define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME #define END_CBUFFER(NAME, REG) ; cbuffer NAME /*REG*/ { SLANG_ParameterGroup_##NAME NAME; } #define CBUFFER_REF(NAME, FIELD) NAME.FIELD - +#define PUBLIC #define sharedC sharedC_0 #define sharedCA sharedCA_0 #define sharedCB sharedCB_0 diff --git a/tests/reflection/multi-file-shared.slang b/tests/reflection/multi-file-shared.slang index af91d5251..91a74cd35 100644 --- a/tests/reflection/multi-file-shared.slang +++ b/tests/reflection/multi-file-shared.slang @@ -3,23 +3,23 @@ #include "multi-file-defines.h" -float4 use(float val) { return val; }; -float4 use(float2 val) { return float4(val,0.0,0.0); }; -float4 use(float3 val) { return float4(val,0.0); }; -float4 use(float4 val) { return val; }; -float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); } +PUBLIC float4 use(float val) { return val; }; +PUBLIC float4 use(float2 val) { return float4(val,0.0,0.0); }; +PUBLIC float4 use(float3 val) { return float4(val,0.0); }; +PUBLIC float4 use(float4 val) { return val; }; +PUBLIC float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); } -Texture2D sharedT R(: register(t2)); -SamplerState sharedS R(: register(s2)); +PUBLIC Texture2D sharedT R(: register(t2)); +PUBLIC SamplerState sharedS R(: register(s2)); -BEGIN_CBUFFER(sharedC) +PUBLIC BEGIN_CBUFFER(sharedC) { - float3 sharedCA; - float sharedCB; - float3 sharedCC; - float2 sharedCD; + PUBLIC float3 sharedCA; + PUBLIC float sharedCB; + PUBLIC float3 sharedCC; + PUBLIC float2 sharedCD; } END_CBUFFER(sharedC, register(b2)) -Texture2D sharedTV R(: register(t3)); -Texture2D sharedTF R(: register(t4)); +PUBLIC Texture2D sharedTV R(: register(t3)); +PUBLIC Texture2D sharedTF R(: register(t4)); diff --git a/tests/reflection/reflect-imported-code.slang b/tests/reflection/reflect-imported-code.slang index 20beb94b8..4600a371c 100644 --- a/tests/reflection/reflect-imported-code.slang +++ b/tests/reflection/reflect-imported-code.slang @@ -2,13 +2,13 @@ // Imported code used by `reflect-imported-code.hlsl` -float4 use(float4 val) { return val; }; -float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } +public float4 use(float4 val) { return val; }; +public float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } -Texture2D t_i; -SamplerState s_i; +public Texture2D t_i; +public SamplerState s_i; -cbuffer C_i +public cbuffer C_i { - float c_i; + public float c_i; } diff --git a/tests/vkray/callable-shared.slang b/tests/vkray/callable-shared.slang index 09e76aab1..85d72a5f7 100644 --- a/tests/vkray/callable-shared.slang +++ b/tests/vkray/callable-shared.slang @@ -1,8 +1,8 @@ // callable-shared.slang //TEST_IGNORE_FILE: -struct MaterialPayload +public struct MaterialPayload { - float4 albedo; - float2 uv; + public float4 albedo; + public float2 uv; }; -- cgit v1.2.3