add -W<warning>/-Werror CLI options
-Weverything: enable all diagnotics
-Wfoo: enable "foo"
-Wno-foo: disable "foo"
-Werror: turn diagnostic warnings into errors
-Wno-error=foo: turn "foo" into a warning
For now, only -Winterface-name is available, which checks if interface
names start with "I".
Bug: 168028537
Test: aidl_unittests
Change-Id: I31516b337dd80b9833205bf769af40e49f88d15d
diff --git a/aidl_language.h b/aidl_language.h
index 4ef6973..d8bb9d8 100644
--- a/aidl_language.h
+++ b/aidl_language.h
@@ -16,11 +16,6 @@
#pragma once
-#include "aidl_typenames.h"
-#include "code_writer.h"
-#include "io_delegate.h"
-#include "options.h"
-
#include <memory>
#include <regex>
#include <string>
@@ -29,8 +24,15 @@
#include <android-base/strings.h>
+#include "aidl_typenames.h"
+#include "code_writer.h"
+#include "diagnostics.h"
+#include "io_delegate.h"
+#include "options.h"
+
using android::aidl::AidlTypenames;
using android::aidl::CodeWriter;
+using android::aidl::DiagnosticsContext;
using android::aidl::Options;
using std::shared_ptr;
using std::string;
@@ -114,14 +116,6 @@
const AidlLocation location_;
};
-namespace android {
-namespace aidl {
-
-class AidlTypenames;
-
-} // namespace aidl
-} // namespace android
-
// unique_ptr<AidlTypeSpecifier> for type arugment,
// std::string for type parameter(T, U, and so on).
template <typename T>
@@ -268,7 +262,7 @@
std::string ToString() const;
const vector<AidlAnnotation>& GetAnnotations() const { return annotations_; }
- virtual bool CheckValid(const AidlTypenames&) const;
+ bool CheckValid(const AidlTypenames&) const;
protected:
virtual std::set<AidlAnnotation::Type> GetSupportedAnnotations() const = 0;
@@ -339,7 +333,7 @@
bool Resolve(const AidlTypenames& typenames);
std::set<AidlAnnotation::Type> GetSupportedAnnotations() const override;
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames) const;
bool LanguageSpecificCheckValid(const AidlTypenames& typenames, Options::Language lang) const;
const AidlNode& AsAidlNode() const override { return *this; }
@@ -811,7 +805,7 @@
virtual const AidlUnionDecl* AsUnionDeclaration() const { return nullptr; }
virtual const AidlInterface* AsInterface() const { return nullptr; }
virtual const AidlParameterizable<std::string>* AsParameterizable() const { return nullptr; }
- bool CheckValid(const AidlTypenames& typenames) const override;
+ virtual bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const;
virtual bool LanguageSpecificCheckValid(const AidlTypenames& typenames,
Options::Language lang) const = 0;
AidlStructuredParcelable* AsStructuredParcelable() {
@@ -895,7 +889,7 @@
std::string GetCppHeader() const { return cpp_header_; }
std::set<AidlAnnotation::Type> GetSupportedAnnotations() const override;
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const override;
bool LanguageSpecificCheckValid(const AidlTypenames& typenames,
Options::Language lang) const override;
const AidlParcelable* AsParcelable() const override { return this; }
@@ -929,7 +923,7 @@
void Dump(CodeWriter* writer) const override;
std::set<AidlAnnotation::Type> GetSupportedAnnotations() const override;
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const override;
bool LanguageSpecificCheckValid(const AidlTypenames& typenames,
Options::Language lang) const override;
};
@@ -983,7 +977,7 @@
return enumerators_;
}
std::set<AidlAnnotation::Type> GetSupportedAnnotations() const override;
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const override;
bool LanguageSpecificCheckValid(const AidlTypenames& /*typenames*/,
Options::Language) const override {
return true;
@@ -1018,7 +1012,7 @@
const AidlNode& AsAidlNode() const override { return *this; }
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const override;
bool LanguageSpecificCheckValid(const AidlTypenames& typenames,
Options::Language lang) const override;
std::string GetPreprocessDeclarationName() const override { return "union"; }
@@ -1046,7 +1040,7 @@
void Dump(CodeWriter* writer) const override;
std::set<AidlAnnotation::Type> GetSupportedAnnotations() const override;
- bool CheckValid(const AidlTypenames& typenames) const override;
+ bool CheckValid(const AidlTypenames& typenames, DiagnosticsContext& context) const override;
bool LanguageSpecificCheckValid(const AidlTypenames& typenames,
Options::Language lang) const override;