瀏覽代碼

all __init__ functions are of type Init

Nicolas Cannasse 1 年之前
父節點
當前提交
c67ad64b6d
共有 1 個文件被更改,包括 6 次插入6 次删除
  1. 6 6
      hxsl/Checker.hx

+ 6 - 6
hxsl/Checker.hx

@@ -241,8 +241,7 @@ class Checker {
 			var kind = switch( f.name ) {
 			case "vertex":  Vertex;
 			case "fragment": Fragment;
-			case "__init__", "__init__vertex", "__init__fragment": Init;
-			default: Helper;
+			default: StringTools.startsWith(f.name,"__init__") ? Init : Helper;
 			}
 			if( args.length != 0 && kind != Helper )
 				error(kind+" function should have no argument", pos);
@@ -427,11 +426,12 @@ class Checker {
 		case EIdent(name):
 			var v = vars.get(name);
 			if( v != null ) {
-				switch( name ) {
-				case "vertex", "fragment", "__init__", "__init__vertex", "__init__fragment":
-					error("Function cannot be accessed", e.pos);
-				default:
+				var canCall =  switch( name ) {
+				case "vertex", "fragment": false;
+				default: !StringTools.startsWith(name,"__init__");
 				}
+				if( !canCall )
+					error("Function cannot be accessed", e.pos);
 				type = v.type;
 				TVar(v);
 			} else {