Bladeren bron

allow @private on locals (prevent sharing by accident on commonly used var name)

Nicolas Cannasse 4 jaren geleden
bovenliggende
commit
7d4c033e9e
2 gewijzigde bestanden met toevoegingen van 2 en 3 verwijderingen
  1. 1 2
      hxsl/Checker.hx
  2. 1 1
      hxsl/Linker.hx

+ 1 - 2
hxsl/Checker.hx

@@ -682,7 +682,6 @@ class Checker {
 					for( q in v.qualifiers )
 						switch( q ) {
 						case Const(_): v.kind = Param;
-						case Private: v.kind = Var;
 						default:
 						}
 				}
@@ -780,7 +779,7 @@ class Checker {
 			tv.qualifiers = v.qualifiers;
 			for( q in v.qualifiers )
 				switch( q ) {
-				case Private: if( tv.kind != Var ) error("@private only allowed on varying", pos);
+				case Private:
 				case Const(_):
 					var p = parent;
 					while( p != null ) {

+ 1 - 1
hxsl/Linker.hx

@@ -126,7 +126,7 @@ class Linker {
 				if( vm == v )
 					return v2;
 			inline function isUnique( v : TVar, borrowed : Bool ) {
-				return (v.kind == Param && !borrowed && !v.hasQualifier(Shared) && !isBatchShader) || v.kind == Function || (v.kind == Var && v.hasQualifier(Private));
+				return (v.kind == Param && !borrowed && !v.hasQualifier(Shared) && !isBatchShader) || v.kind == Function || ((v.kind == Var || v.kind == Local) && v.hasQualifier(Private));
 			}
 			if( isUnique(v, v2.v.hasBorrowQualifier(shaderName)) || isUnique(v2.v, v.hasBorrowQualifier(v2.rootShaderName)) || (v.kind == Param && v2.v.kind == Param) /* two shared : one takes priority */ ) {
 				// allocate a new unique name in the shader if already in use