0

我正在应用方面,但不知何故似乎做错了什么。成像著名的参考图片。

在此处输入图像描述

在我的情况下,A 是:

deps_aspect = aspect(
    implementation = _deps_aspect_impl,
    attr_aspects = ["resource_deps"],
    attrs = {
    },
)

对于A(W)_deps_aspect_impl返回:

    return struct(
        dep_files = set(),
    )

现在,如果我正确理解了文档,我应该能够通过A(Y)访问A(W ) 。dep_filesresource_deps

如果对于A(Y)_deps_aspect_impl我会:

print("DIR: %s" % dir(ctx.rule.attr))

没有resource_deps打印(我无法访问它)。

我是否理解错误或这应该如何工作?

4

1 回答 1

0

所以问题是我没有抓住各种细微差别。

  1. attr_aspects是递归的。这意味着一旦您申请,它们就会向下传播。所以属性对于那个应用来说是全局的。也许能够用kind->attr映射指定一个字典会更好。

  2. 由于 1. 你真的需要看一下kind,所以你有不同的代码路径(我做对的一件事)。

  3. 数据不能通过影子图传播。我以前也这么想过。您只能在“可靠”规则上传播attrs

于 2017-04-28T14:08:35.130 回答