MCPcopy
hub / github.com/hylang/hy / compile_class_expression

Function compile_class_expression

hy/core/result_macros.py:1846–1875  ·  view source on GitHub ↗
(compiler, expr, root, decorators, tp, name, rest)

Source from the content-addressed store, hash-verified

1844 ],
1845)
1846def compile_class_expression(compiler, expr, root, decorators, tp, name, rest):
1847 base_list, docstring, body = rest or ([[]], None, [])
1848
1849 decorators, ret, _ = compiler._compile_collect(decorators[0] if decorators else [])
1850 bases_expr, ret2, keywords = compiler._compile_collect(
1851 base_list[0], with_kwargs=True
1852 )
1853 ret += ret2
1854
1855 bodyr = Result()
1856
1857 if docstring is not None:
1858 bodyr += compiler.compile(docstring).expr_as_stmt()
1859
1860 name = mangle(compiler._nonconst(name))
1861 compiler.scope.define(name)
1862
1863 with compiler.local_state(), compiler.scope.create(ScopeFn):
1864 e = compiler._compile_branch(body)
1865 bodyr += e + e.expr_as_stmt()
1866
1867 return ret + asty.ClassDef(
1868 expr,
1869 decorator_list=decorators,
1870 name=name,
1871 keywords=keywords,
1872 bases=bases_expr,
1873 body=bodyr.stmts or [asty.Pass(expr)],
1874 **digest_type_params(compiler, tp)
1875 )
1876
1877
1878# ------------------------------------------------

Callers

nothing calls this directly

Calls 11

ResultClass · 0.90
mangleFunction · 0.90
digest_type_paramsFunction · 0.85
_compile_collectMethod · 0.80
expr_as_stmtMethod · 0.80
compileMethod · 0.80
_nonconstMethod · 0.80
local_stateMethod · 0.80
createMethod · 0.80
_compile_branchMethod · 0.80
defineMethod · 0.45

Tested by

no test coverage detected