Browse Source

Lua: only require a 3rd party lib if it is used directly

Justin Donaldson 9 years ago
parent
commit
a2947757bb
1 changed files with 8 additions and 7 deletions
  1. 8 7
      genlua.ml

+ 8 - 7
genlua.ml

@@ -1558,11 +1558,11 @@ let generate_enumMeta_fields ctx = function
 	end
     | _ -> ()
 
-let generate_require ctx c =
-	let _, args, mp = Meta.get Meta.LuaRequire c.cl_meta in
-	let p = (s_path ctx c.cl_path) in
+let generate_require ctx path meta =
+	let _, args, mp = Meta.get Meta.LuaRequire meta in
+	let p = (s_path ctx path) in
 
-	generate_package_create ctx c.cl_path;
+	generate_package_create ctx path;
 
 	(match args with
 	| [(EConst(String(module_name)),_)] ->
@@ -1588,14 +1588,15 @@ let generate_type ctx = function
 			()
 		else if not c.cl_extern then
 			generate_class ctx c
-		else if (Meta.has Meta.LuaRequire c.cl_meta) then
-			generate_require ctx c
+		else if Meta.has Meta.LuaRequire c.cl_meta && is_directly_used ctx.com c.cl_meta then
+			generate_require ctx c.cl_path c.cl_meta
 		else if Meta.has Meta.InitPackage c.cl_meta then
 			(match c.cl_path with
 			| ([],_) -> ()
 			| _ -> generate_package_create ctx c.cl_path)
 	| TEnumDecl e when e.e_extern ->
-		()
+		if Meta.has Meta.LuaRequire e.e_meta && is_directly_used ctx.com e.e_meta then
+		    generate_require ctx e.e_path e.e_meta;
 	| TEnumDecl e -> generate_enum ctx e
 	| TTypeDecl _ | TAbstractDecl _ -> ()