Flag an error on empty rust module srcs
It's an error if a rust module's srcs is empty. Prior to this change the output was a panic that complains loudly about a slice error and nothing else. This change doesn't stop the panic, but at least adds a bit of context so devs who make a simple mistake can more easily fix it. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Change-Id: Id7d8465d533413c3000699661222a53a7c8678f3
This commit is contained in:
parent
2649c7913a
commit
3afac0b36f
2 changed files with 39 additions and 0 deletions
|
@ -449,6 +449,10 @@ func (compiler *baseCompiler) relativeInstallPath() string {
|
|||
|
||||
// Returns the Path for the main source file along with Paths for generated source files from modules listed in srcs.
|
||||
func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) (android.Path, android.Paths) {
|
||||
if len(srcs) == 0 {
|
||||
ctx.PropertyErrorf("srcs", "srcs must not be empty")
|
||||
}
|
||||
|
||||
// The srcs can contain strings with prefix ":".
|
||||
// They are dependent modules of this module, with android.SourceDepTag.
|
||||
// They are not the main source file compiled by rustc.
|
||||
|
|
|
@ -98,6 +98,41 @@ func TestEnforceSingleSourceFile(t *testing.T) {
|
|||
}`)
|
||||
}
|
||||
|
||||
// Test that we reject _no_ source files.
|
||||
func TestEnforceMissingSourceFiles(t *testing.T) {
|
||||
|
||||
singleSrcError := "srcs must not be empty"
|
||||
|
||||
// Test libraries
|
||||
testRustError(t, singleSrcError, `
|
||||
rust_library_host {
|
||||
name: "foo-bar-library",
|
||||
crate_name: "foo",
|
||||
}`)
|
||||
|
||||
// Test binaries
|
||||
testRustError(t, singleSrcError, `
|
||||
rust_binary_host {
|
||||
name: "foo-bar-binary",
|
||||
crate_name: "foo",
|
||||
}`)
|
||||
|
||||
// Test proc_macros
|
||||
testRustError(t, singleSrcError, `
|
||||
rust_proc_macro {
|
||||
name: "foo-bar-proc-macro",
|
||||
crate_name: "foo",
|
||||
}`)
|
||||
|
||||
// Test prebuilts
|
||||
testRustError(t, singleSrcError, `
|
||||
rust_prebuilt_dylib {
|
||||
name: "foo-bar-prebuilt",
|
||||
crate_name: "foo",
|
||||
host_supported: true,
|
||||
}`)
|
||||
}
|
||||
|
||||
// Test environment vars for Cargo compat are set.
|
||||
func TestCargoCompat(t *testing.T) {
|
||||
ctx := testRust(t, `
|
||||
|
|
Loading…
Reference in a new issue