From 3c5905b0cbed94c2b8f5543a14cdc1af2db8acaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thi=C3=A9baud=20Weksteen?= Date: Wed, 25 Nov 2020 16:09:32 +0100 Subject: [PATCH] Ignore variant dependencies in rust-project.json Source-generated library modules will have a dependency on the source variant. This creates a cycle in the dependency graph which triggers a warning from rust-analyzer. Ignore this type of dependency. Test: m nothing Change-Id: I13365093ebb88b00f6a72734b01114ec3e9a320e --- rust/project_json.go | 4 ++++ rust/project_json_test.go | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/rust/project_json.go b/rust/project_json.go index 569740831..8d9e50ca9 100644 --- a/rust/project_json.go +++ b/rust/project_json.go @@ -109,6 +109,10 @@ func (singleton *projectGeneratorSingleton) mergeDependencies(ctx android.Single if !ok { return } + // Skip intra-module dependencies (i.e., generated-source library depending on the source variant). + if module.Name() == child.Name() { + return + } if _, ok = deps[ctx.ModuleName(child)]; ok { return } diff --git a/rust/project_json_test.go b/rust/project_json_test.go index 69288fcfa..16699c19a 100644 --- a/rust/project_json_test.go +++ b/rust/project_json_test.go @@ -131,6 +131,22 @@ func TestProjectJsonBindGen(t *testing.T) { t.Errorf("The source path for libbindings2 does not contain the BuildOs, got %v; want %v", rootModule, android.BuildOs.String()) } + // Check that libbindings1 does not depend on itself. + if strings.Contains(rootModule, "libbindings1") { + deps, ok := crate["deps"].([]interface{}) + if !ok { + t.Errorf("Unexpected format for deps: %v", crate["deps"]) + } + for _, dep := range deps { + d, ok := dep.(map[string]interface{}) + if !ok { + t.Errorf("Unexpected format for dep: %v", dep) + } + if d["name"] == "bindings1" { + t.Errorf("libbindings1 depends on itself") + } + } + } } }