Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b3da463 authored by Matthew Maurer's avatar Matthew Maurer
Browse files

rust-project.json: Generate proc-macro paths

`rust-analyzer` can expand and reason about code if paths to the built
proc macro files are provided. Generate these from Soong.

Bug: 372634041
Test: Check that rust-project.json contains proc-macro paths
Test: Open system/security/mls/mls-rs-crypto-boringssl/src/lib.rs (for #[derive(Error)])
Change-Id: Ie0985540f1efdf1bbce6a7433ec414bdcad45ea3
parent f7a1f641
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ type rustProjectCrate struct {
	Cfg            []string          `json:"cfg"`
	Env            map[string]string `json:"env"`
	ProcMacro      bool              `json:"is_proc_macro"`
	ProcMacroDylib *string           `json:"proc_macro_dylib_path"`
}

type rustProjectJson struct {
@@ -135,7 +136,11 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex
		return 0, false
	}

	_, procMacro := rModule.compiler.(*procMacroDecorator)
	var procMacroDylib *string = nil
	if procDec, procMacro := rModule.compiler.(*procMacroDecorator); procMacro {
		procMacroDylib = new(string)
		*procMacroDylib = procDec.baseCompiler.unstrippedOutputFilePath().String()
	}

	crate := rustProjectCrate{
		DisplayName:    rModule.Name(),
@@ -144,7 +149,8 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex
		Deps:           make([]rustProjectDep, 0),
		Cfg:            make([]string, 0),
		Env:            make(map[string]string),
		ProcMacro:   procMacro,
		ProcMacro:      procMacroDylib != nil,
		ProcMacroDylib: procMacroDylib,
	}

	if rModule.compiler.cargoOutDir().Valid() {