scryer-engine 0.3.0

Tree-sitter AST indexing and reference resolution engine for Scryer code intelligence
"""Every line marked `@ref` must produce a reference to `target` (see tests/support/recall.rs)."""


def target():
    return 1


def take(x):
    return x


def c01_direct():
    target()  # @ref target


def c02_argument():
    take(target())  # @ref target


def c03_binding():
    x = target()  # @ref target
    return x


def c04_chain():
    return target().bit_length()  # @ref target


def c05_lambda():
    return lambda: target()  # @ref target


def c06_condition():
    if target() > 0:  # @ref target
        pass


def c07_return():
    return target()  # @ref target


def c08_binary():
    return take(1) + target()  # @ref target


def c09_comprehension():
    return [target() for _ in range(2)]  # @ref target


def c10_dict():
    return {"k": target()}  # @ref target


def c11_fstring():
    return f"{target()}"  # @ref target


def c12_keyword_argument():
    return take(x=target())  # @ref target


def c13_nested_function():
    def inner():
        return target()  # @ref target

    return inner


def c14_default_argument(x=target()):  # @ref target phase=5
    return x


def c15_function_as_value():
    f = target  # @ref target role=value phase=4
    return f


def helper_for_class():
    return 1


class Holder:
    attribute = helper_for_class()  # @ref helper_for_class phase=5


top_level = helper_for_class()  # @ref helper_for_class phase=5