diff options
author | ThiƩbaud Weksteen <tweek@google.com> | 2020-08-13 12:55:59 +0200 |
---|---|---|
committer | ThiƩbaud Weksteen <tweek@google.com> | 2020-08-13 15:58:09 +0200 |
commit | 9e8451e5243e77fef5fddfdf4f000d82f66e395f (patch) | |
tree | a855d09c583178e0a256aae041c3fedb1f09ffb0 /rust/compiler.go | |
parent | 29737cfc944f73f5c1095126d1d2d701b1a7db09 (diff) |
rust: modify linting properties
Move the linting properties to an enum with 4 possible options:
"default", "android", "vendor" or "none". The previous logic for
default, based on the module's location, is kept. It is now possible to
force the upgrade to a certain lint level for some modules (e.g.
external/[...]/android). Update the unit tests and documentation.
Bug: 163400111
Test: m
Change-Id: I8e464b04401158ed2d3c518a9b72f145a9835c99
Diffstat (limited to 'rust/compiler.go')
-rw-r--r-- | rust/compiler.go | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/rust/compiler.go b/rust/compiler.go index c39a4a181..ef7fb8cfc 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -32,8 +32,8 @@ func (compiler *baseCompiler) setNoStdlibs() { compiler.Properties.No_stdlibs = proptools.BoolPtr(true) } -func (compiler *baseCompiler) setNoLint() { - compiler.Properties.No_lint = proptools.BoolPtr(true) +func (compiler *baseCompiler) disableLints() { + compiler.Properties.Lints = proptools.StringPtr("none") } func NewBaseCompiler(dir, dir64 string, location installLocation) *baseCompiler { @@ -58,8 +58,14 @@ type BaseCompilerProperties struct { // path to the source file that is the main entry point of the program (e.g. main.rs or lib.rs) Srcs []string `android:"path,arch_variant"` - // whether to suppress the standard lint flags - default to false - No_lint *bool + // name of the lint set that should be used to validate this module. + // + // Possible values are "default" (for using a sensible set of lints + // depending on the module's location), "android" (for the strictest + // lint set that applies to all Android platform code), "vendor" (for + // a relaxed set) and "none" (for ignoring all lint warnings and + // errors). The default value is "default". + Lints *string // flags to pass to rustc Flags []string `android:"path,arch_variant"` @@ -159,11 +165,11 @@ func (compiler *baseCompiler) featuresToFlags(features []string) []string { func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flags { - if Bool(compiler.Properties.No_lint) { - flags.RustFlags = append(flags.RustFlags, config.AllowAllLints) - } else { - flags.RustFlags = append(flags.RustFlags, config.RustcLintsForDir(ctx.ModuleDir())) + lintFlags, err := config.RustcLintsForDir(ctx.ModuleDir(), compiler.Properties.Lints) + if err != nil { + ctx.PropertyErrorf("lints", err.Error()) } + flags.RustFlags = append(flags.RustFlags, lintFlags) flags.RustFlags = append(flags.RustFlags, compiler.Properties.Flags...) flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags(compiler.Properties.Features)...) flags.RustFlags = append(flags.RustFlags, "--edition="+compiler.edition()) |