in tools/resource.py [0:0]
def _find_ast_resource(cls, ast):
decls = ast.get("Decls")
if not decls:
return
for decl in decls:
if decl["NodeType"] != "FuncDecl":
continue
decl_type = decl["Type"]
if decl_type["NodeType"] != "FuncType":
continue
if decl_type["Results"]["NodeType"] != "FieldList":
continue
for result in decl_type["Results"]["List"]:
if result["Type"] != cls.AST_FUNC_RETURN:
continue
for block in decl["Body"]["List"]:
if block["NodeType"] != "ReturnStmt":
continue
for result in block["Results"]:
x = result.get("X")
if x and x["Type"] == cls.AST_RESOURCE_TYPE:
return x