From fcb106a7f0b7f592dca758e1c303f70308c304d3 Mon Sep 17 00:00:00 2001 From: Austin Henriksen Date: Tue, 11 Jun 2024 14:32:56 -0400 Subject: [PATCH] Update our Usage of `virtual`/`override`/`final` in the Slice Compiler (#2281) --- cpp/src/Slice/FileTracker.h | 6 +- cpp/src/Slice/GrammarUtil.h | 28 ++-- cpp/src/Slice/Parser.h | 210 ++++++++++++++-------------- cpp/src/Slice/Preprocessor.h | 2 +- cpp/src/Slice/StringLiteralUtil.cpp | 2 +- cpp/src/slice2cpp/Gen.cpp | 6 - cpp/src/slice2cpp/Gen.h | 3 +- cpp/src/slice2cs/CsUtil.h | 28 ++-- cpp/src/slice2cs/Gen.h | 86 ++++++------ cpp/src/slice2java/Gen.h | 50 +++---- cpp/src/slice2java/JavaUtil.cpp | 26 ++-- cpp/src/slice2java/JavaUtil.h | 6 +- cpp/src/slice2js/Gen.cpp | 6 - cpp/src/slice2js/Gen.h | 93 ++++++------ cpp/src/slice2matlab/Main.cpp | 18 +-- cpp/src/slice2php/Main.cpp | 22 +-- cpp/src/slice2py/Python.cpp | 4 +- cpp/src/slice2py/PythonUtil.cpp | 60 ++++---- cpp/src/slice2rb/RubyUtil.cpp | 26 ++-- cpp/src/slice2swift/Gen.h | 68 ++++----- cpp/src/slice2swift/SwiftUtil.h | 22 +-- 21 files changed, 379 insertions(+), 393 deletions(-) diff --git a/cpp/src/Slice/FileTracker.h b/cpp/src/Slice/FileTracker.h index df5847187bf..bb26a5d2754 100644 --- a/cpp/src/Slice/FileTracker.h +++ b/cpp/src/Slice/FileTracker.h @@ -13,8 +13,8 @@ namespace Slice { public: FileException(const char*, int, const std::string&); - virtual std::string ice_id() const; - virtual void ice_print(std::ostream&) const; + std::string ice_id() const override; + void ice_print(std::ostream&) const override; std::string reason() const; @@ -25,7 +25,7 @@ namespace Slice class FileTracker; using FileTrackerPtr = std::shared_ptr; - class FileTracker + class FileTracker final { public: FileTracker(); diff --git a/cpp/src/Slice/GrammarUtil.h b/cpp/src/Slice/GrammarUtil.h index 6a9183ee76e..f3885b37f2d 100644 --- a/cpp/src/Slice/GrammarUtil.h +++ b/cpp/src/Slice/GrammarUtil.h @@ -46,7 +46,7 @@ namespace Slice // StringTok // ---------------------------------------------------------------------- - class StringTok : public GrammarBase + class StringTok final : public GrammarBase { public: StringTok() {} @@ -58,7 +58,7 @@ namespace Slice // StringListTok // ---------------------------------------------------------------------- - class StringListTok : public GrammarBase + class StringListTok final : public GrammarBase { public: StringListTok() {} @@ -69,7 +69,7 @@ namespace Slice // TypeStringTok // ---------------------------------------------------------------------- - class TypeStringTok : public GrammarBase + class TypeStringTok final : public GrammarBase { public: TypeStringTok() {} @@ -80,7 +80,7 @@ namespace Slice // TypeStringListTok // ---------------------------------------------------------------------- - class TypeStringListTok : public GrammarBase + class TypeStringListTok final : public GrammarBase { public: TypeStringListTok() {} @@ -91,7 +91,7 @@ namespace Slice // IntegerTok // ---------------------------------------------------------------------- - class IntegerTok : public GrammarBase + class IntegerTok final : public GrammarBase { public: IntegerTok() : v(0) {} @@ -103,7 +103,7 @@ namespace Slice // FloatingTok // ---------------------------------------------------------------------- - class FloatingTok : public GrammarBase + class FloatingTok final : public GrammarBase { public: FloatingTok() : v(0) {} @@ -115,7 +115,7 @@ namespace Slice // BoolTok // ---------------------------------------------------------------------- - class BoolTok : public GrammarBase + class BoolTok final : public GrammarBase { public: BoolTok() : v(false) {} @@ -126,7 +126,7 @@ namespace Slice // ExceptionListTok // ---------------------------------------------------------------------- - class ExceptionListTok : public GrammarBase + class ExceptionListTok final : public GrammarBase { public: ExceptionListTok() {} @@ -137,7 +137,7 @@ namespace Slice // ClassListTok // ---------------------------------------------------------------------- - class ClassListTok : public GrammarBase + class ClassListTok final : public GrammarBase { public: ClassListTok() {} @@ -148,7 +148,7 @@ namespace Slice // InterfaceListTok // ---------------------------------------------------------------------- - class InterfaceListTok : public GrammarBase + class InterfaceListTok final : public GrammarBase { public: InterfaceListTok() {} @@ -159,7 +159,7 @@ namespace Slice // EnumeratorListTok // ---------------------------------------------------------------------- - class EnumeratorListTok : public GrammarBase + class EnumeratorListTok final : public GrammarBase { public: EnumeratorListTok() {} @@ -170,7 +170,7 @@ namespace Slice // ConstDefTok // ---------------------------------------------------------------------- - class ConstDefTok : public GrammarBase + class ConstDefTok final : public GrammarBase { public: ConstDefTok() {} @@ -190,7 +190,7 @@ namespace Slice // OptionalDefTok // ---------------------------------------------------------------------- - class OptionalDefTok : public GrammarBase + class OptionalDefTok final : public GrammarBase { public: OptionalDefTok() : isOptional(false), tag(0) {} @@ -207,7 +207,7 @@ namespace Slice // ClassIdTok // ---------------------------------------------------------------------- - class ClassIdTok : public GrammarBase + class ClassIdTok final : public GrammarBase { public: ClassIdTok() : t(0) {} diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h index 1837d640f9a..c05468e5169 100644 --- a/cpp/src/Slice/Parser.h +++ b/cpp/src/Slice/Parser.h @@ -25,8 +25,8 @@ namespace Slice { public: CompilerException(const char*, int, const std::string&); - virtual std::string ice_id() const; - virtual void ice_print(std::ostream&) const; + std::string ice_id() const override; + void ice_print(std::ostream&) const override; std::string reason() const; @@ -205,7 +205,7 @@ namespace Slice // DefinitionContext // ---------------------------------------------------------------------- - class DefinitionContext + class DefinitionContext final { public: DefinitionContext(int, const StringList&); @@ -248,7 +248,7 @@ namespace Slice // Comment // ---------------------------------------------------------------------- - class Comment + class Comment final { public: bool isDeprecated() const; @@ -327,7 +327,7 @@ namespace Slice // Builtin // ---------------------------------------------------------------------- - class Builtin : public virtual Type + class Builtin final : public virtual Type { public: enum Kind @@ -347,11 +347,11 @@ namespace Slice Builtin(const UnitPtr&, Kind); - virtual std::string typeId() const; - virtual bool isClassType() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; + std::string typeId() const final; + bool isClassType() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; bool isNumericType() const; bool isIntegralType() const; @@ -451,7 +451,7 @@ namespace Slice { public: Container(const UnitPtr&); - virtual void destroy(); + void destroy() override; ModulePtr createModule(const std::string&); ClassDefPtr createClassDef(const std::string&, int, const ClassDefPtr&); ClassDeclPtr createClassDecl(const std::string&); @@ -507,7 +507,7 @@ namespace Slice std::string thisScope() const; void sort(); void sortContents(bool); - virtual void visit(ParserVisitor*, bool); + void visit(ParserVisitor*, bool) override; bool checkIntroduced(const std::string&, ContainedPtr = 0); bool checkForGlobalDef(const std::string&, const char*); @@ -524,13 +524,13 @@ namespace Slice // Module // ---------------------------------------------------------------------- - class Module : public virtual Container, public virtual Contained + class Module final : public virtual Container, public virtual Contained { public: Module(const ContainerPtr&, const std::string&); - virtual ContainedType containedType() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; friend class Container; }; @@ -543,26 +543,26 @@ namespace Slice { public: Constructed(const ContainerPtr&, const std::string&); - virtual std::string typeId() const; + std::string typeId() const override; }; // ---------------------------------------------------------------------- // ClassDecl // ---------------------------------------------------------------------- - class ClassDecl : public virtual Constructed + class ClassDecl final : public virtual Constructed { public: ClassDecl(const ContainerPtr&, const std::string&); - virtual void destroy(); + void destroy() final; ClassDefPtr definition() const; - virtual ContainedType containedType() const; - virtual bool isClassType() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; - virtual void visit(ParserVisitor*, bool); - virtual std::string kindOf() const; + ContainedType containedType() const final; + bool isClassType() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; + void visit(ParserVisitor*, bool) final; + std::string kindOf() const final; protected: friend class Container; @@ -582,11 +582,11 @@ namespace Slice // so if you need the class as a "constructed type", use the // declaration() operation to navigate to the class declaration. // - class ClassDef : public virtual Container, public virtual Contained + class ClassDef final : public virtual Container, public virtual Contained { public: ClassDef(const ContainerPtr&, const std::string&, int, const ClassDefPtr&); - virtual void destroy(); + void destroy() final; DataMemberPtr createDataMember( const std::string&, const TypePtr&, @@ -609,10 +609,10 @@ namespace Slice bool hasDefaultValues() const; bool inheritsMetaData(const std::string&) const; bool hasBaseDataMembers() const; - virtual ContainedType containedType() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + void visit(ParserVisitor*, bool) final; int compactId() const; - virtual std::string kindOf() const; + std::string kindOf() const final; protected: friend class Container; @@ -627,18 +627,18 @@ namespace Slice // InterfaceDecl // ---------------------------------------------------------------------- - class InterfaceDecl : public virtual Constructed + class InterfaceDecl final : public virtual Constructed { public: InterfaceDecl(const ContainerPtr&, const std::string&); - virtual void destroy(); + void destroy() final; InterfaceDefPtr definition() const; - virtual ContainedType containedType() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; - virtual void visit(ParserVisitor*, bool); - virtual std::string kindOf() const; + ContainedType containedType() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; + void visit(ParserVisitor*, bool) final; + std::string kindOf() const final; static void checkBasesAreLegal(const std::string&, const InterfaceList&, const UnitPtr&); @@ -662,7 +662,7 @@ namespace Slice // Operation // ---------------------------------------------------------------------- - class Operation : public virtual Contained, public virtual Container + class Operation final : public virtual Contained, public virtual Container { public: // @@ -690,15 +690,15 @@ namespace Slice void outParameters(ParamDeclList&, ParamDeclList&) const; ExceptionList throws() const; void setExceptionList(const ExceptionList&); - virtual ContainedType containedType() const; + ContainedType containedType() const final; bool sendsClasses() const; bool returnsClasses() const; bool returnsData() const; bool returnsMultipleValues() const; bool sendsOptionals() const; FormatType format() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class InterfaceDef; @@ -721,11 +721,11 @@ namespace Slice // so if you need the interface as a "constructed type", use the // declaration() function to navigate to the interface declaration. // - class InterfaceDef : public virtual Container, public virtual Contained + class InterfaceDef final : public virtual Container, public virtual Contained { public: InterfaceDef(const ContainerPtr&, const std::string&, const InterfaceList&); - virtual void destroy(); + void destroy() final; OperationPtr createOperation(const std::string&, const TypePtr&, bool, int, Operation::Mode = Operation::Normal); @@ -737,9 +737,9 @@ namespace Slice bool isA(const std::string&) const; bool hasOperations() const; bool inheritsMetaData(const std::string&) const; - virtual ContainedType containedType() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; // Returns the type IDs of all the interfaces in the inheritance tree, in alphabetical order. StringList ids() const; @@ -757,11 +757,11 @@ namespace Slice // ---------------------------------------------------------------------- // No inheritance from Constructed, as this is not a Type - class Exception : public virtual Container, public virtual Contained + class Exception final : public virtual Container, public virtual Contained { public: Exception(const ContainerPtr&, const std::string&, const ExceptionPtr&); - virtual void destroy(); + void destroy() final; DataMemberPtr createDataMember( const std::string&, const TypePtr&, @@ -777,14 +777,14 @@ namespace Slice DataMemberList allClassDataMembers() const; ExceptionPtr base() const; ExceptionList allBases() const; - virtual bool isBaseOf(const ExceptionPtr&) const; - virtual ContainedType containedType() const; + bool isBaseOf(const ExceptionPtr&) const; + ContainedType containedType() const final; bool usesClasses() const; bool hasDefaultValues() const; bool inheritsMetaData(const std::string&) const; bool hasBaseDataMembers() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class Container; @@ -796,7 +796,7 @@ namespace Slice // Struct // ---------------------------------------------------------------------- - class Struct : public virtual Container, public virtual Constructed + class Struct final : public virtual Container, public virtual Constructed { public: Struct(const ContainerPtr&, const std::string&); @@ -810,14 +810,14 @@ namespace Slice const std::string&); DataMemberList dataMembers() const; DataMemberList classDataMembers() const; - virtual ContainedType containedType() const; - virtual bool usesClasses() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; + ContainedType containedType() const final; + bool usesClasses() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; bool hasDefaultValues() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; friend class Container; }; @@ -826,19 +826,19 @@ namespace Slice // Sequence // ---------------------------------------------------------------------- - class Sequence : public virtual Constructed + class Sequence final : public virtual Constructed { public: Sequence(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&); TypePtr type() const; StringList typeMetaData() const; - virtual ContainedType containedType() const; - virtual bool usesClasses() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + bool usesClasses() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class Container; @@ -851,7 +851,7 @@ namespace Slice // Dictionary // ---------------------------------------------------------------------- - class Dictionary : public virtual Constructed + class Dictionary final : public virtual Constructed { public: Dictionary( @@ -865,13 +865,13 @@ namespace Slice TypePtr valueType() const; StringList keyMetaData() const; StringList valueMetaData() const; - virtual ContainedType containedType() const; - virtual bool usesClasses() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + bool usesClasses() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; static bool legalKeyType(const TypePtr&); @@ -888,20 +888,20 @@ namespace Slice // Enum // ---------------------------------------------------------------------- - class Enum : public virtual Container, public virtual Constructed + class Enum final : public virtual Container, public virtual Constructed { public: Enum(const ContainerPtr&, const std::string&); - virtual void destroy(); + void destroy() final; bool explicitValue() const; int minValue() const; int maxValue() const; - virtual ContainedType containedType() const; - virtual size_t minWireSize() const; - virtual std::string getOptionalFormat() const; - virtual bool isVariableLength() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + size_t minWireSize() const final; + std::string getOptionalFormat() const final; + bool isVariableLength() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: int newEnumerator(const EnumeratorPtr&); @@ -919,15 +919,15 @@ namespace Slice // Enumerator // ---------------------------------------------------------------------- - class Enumerator : public virtual Contained + class Enumerator final : public virtual Contained { public: Enumerator(const ContainerPtr&, const std::string&); Enumerator(const ContainerPtr&, const std::string&, int); - virtual void init(); + void init() final; EnumPtr type() const; - virtual ContainedType containedType() const; - virtual std::string kindOf() const; + ContainedType containedType() const final; + std::string kindOf() const final; bool explicitValue() const; int value() const; @@ -943,7 +943,7 @@ namespace Slice // Const // ---------------------------------------------------------------------- - class Const : public virtual Contained + class Const final : public virtual Contained { public: Const( @@ -959,9 +959,9 @@ namespace Slice SyntaxTreeBasePtr valueType() const; std::string value() const; std::string literal() const; - virtual ContainedType containedType() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class Container; @@ -977,7 +977,7 @@ namespace Slice // ParamDecl // ---------------------------------------------------------------------- - class ParamDecl : public virtual Contained + class ParamDecl final : public virtual Contained { public: ParamDecl(const ContainerPtr&, const std::string&, const TypePtr&, bool, bool, int); @@ -985,9 +985,9 @@ namespace Slice bool isOutParam() const; bool optional() const; int tag() const; - virtual ContainedType containedType() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class Operation; @@ -1002,7 +1002,7 @@ namespace Slice // DataMember // ---------------------------------------------------------------------- - class DataMember : public virtual Contained + class DataMember final : public virtual Contained { public: DataMember( @@ -1020,9 +1020,9 @@ namespace Slice std::string defaultValue() const; std::string defaultLiteral() const; SyntaxTreeBasePtr defaultValueType() const; - virtual ContainedType containedType() const; - virtual std::string kindOf() const; - virtual void visit(ParserVisitor*, bool); + ContainedType containedType() const final; + std::string kindOf() const final; + void visit(ParserVisitor*, bool) final; protected: friend class ClassDef; @@ -1041,7 +1041,7 @@ namespace Slice // Unit // ---------------------------------------------------------------------- - class Unit : public virtual Container + class Unit final : public virtual Container { public: static UnitPtr createUnit(bool, const StringList& = StringList()); @@ -1093,8 +1093,8 @@ namespace Slice int parse(const std::string&, FILE*, bool); - virtual void destroy(); - virtual void visit(ParserVisitor*, bool); + void destroy() final; + void visit(ParserVisitor*, bool) final; BuiltinPtr builtin(Builtin::Kind); // Not const, as builtins are created on the fly. (Lazy initialization.) diff --git a/cpp/src/Slice/Preprocessor.h b/cpp/src/Slice/Preprocessor.h index dc66f54e7b3..96beb6bdcd9 100644 --- a/cpp/src/Slice/Preprocessor.h +++ b/cpp/src/Slice/Preprocessor.h @@ -14,7 +14,7 @@ namespace Slice class Preprocessor; using PreprocessorPtr = std::shared_ptr; - class Preprocessor + class Preprocessor final { public: static PreprocessorPtr create(const std::string&, const std::string&, const std::vector&); diff --git a/cpp/src/Slice/StringLiteralUtil.cpp b/cpp/src/Slice/StringLiteralUtil.cpp index a3b1d62b69b..9701f5ea31f 100644 --- a/cpp/src/Slice/StringLiteralUtil.cpp +++ b/cpp/src/Slice/StringLiteralUtil.cpp @@ -17,7 +17,7 @@ using namespace IceUtilInternal; namespace { - class StringLiteralGenerator + class StringLiteralGenerator final { public: StringLiteralGenerator(const string&, const string&, EscapeMode, unsigned char); diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 8111004a808..dd44054e705 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -3293,12 +3293,6 @@ Slice::Gen::StreamVisitor::visitClassDefStart(const ClassDefPtr& c) return false; } -bool -Slice::Gen::StreamVisitor::visitExceptionStart(const ExceptionPtr&) -{ - return true; -} - void Slice::Gen::StreamVisitor::visitExceptionEnd(const ExceptionPtr& p) { diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h index 3b0efde5780..c599e28a0e5 100644 --- a/cpp/src/slice2cpp/Gen.h +++ b/cpp/src/slice2cpp/Gen.h @@ -11,7 +11,7 @@ namespace Slice { - class Gen + class Gen final { public: Gen(const std::string&, @@ -197,7 +197,6 @@ namespace Slice void visitModuleEnd(const ModulePtr&) final; bool visitStructStart(const StructPtr&) final; bool visitClassDefStart(const ClassDefPtr&) final; - bool visitExceptionStart(const ExceptionPtr&) final; void visitExceptionEnd(const ExceptionPtr&) final; void visitEnum(const EnumPtr&) final; diff --git a/cpp/src/slice2cs/CsUtil.h b/cpp/src/slice2cs/CsUtil.h index a8927a89904..675c9646476 100644 --- a/cpp/src/slice2cs/CsUtil.h +++ b/cpp/src/slice2cs/CsUtil.h @@ -109,22 +109,22 @@ namespace Slice bool); private: - class MetaDataVisitor : public ParserVisitor + class MetaDataVisitor final : public ParserVisitor { public: - virtual bool visitUnitStart(const UnitPtr&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitOperation(const OperationPtr&); - virtual void visitParamDecl(const ParamDeclPtr&); - virtual void visitDataMember(const DataMemberPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitUnitStart(const UnitPtr&) final; + bool visitModuleStart(const ModulePtr&) final; + void visitClassDecl(const ClassDeclPtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitOperation(const OperationPtr&) final; + void visitParamDecl(const ParamDeclPtr&) final; + void visitDataMember(const DataMemberPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: void validate(const ContainedPtr&); diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h index 1449c54dcf4..4bc694e92a9 100644 --- a/cpp/src/slice2cs/Gen.h +++ b/cpp/src/slice2cs/Gen.h @@ -27,8 +27,8 @@ namespace Slice void writeMarshalDataMember(const DataMemberPtr&, const std::string&, const std::string&, bool = false); void writeUnmarshalDataMember(const DataMemberPtr&, const std::string&, const std::string&, bool = false); - virtual void writeInheritedOperations(const InterfaceDefPtr&); - virtual void writeMarshaling(const ClassDefPtr&); + void writeInheritedOperations(const InterfaceDefPtr&); + void writeMarshaling(const ClassDefPtr&); static std::vector getParams(const OperationPtr&, const std::string&); static std::vector getInParams(const OperationPtr&, const std::string&, bool = false); @@ -92,7 +92,7 @@ namespace Slice ::IceUtilInternal::Output& _out; }; - class Gen + class Gen final { public: Gen(const std::string&, const std::vector&, const std::string&); @@ -107,56 +107,56 @@ namespace Slice void printHeader(); - class UnitVisitor : public CsVisitor + class UnitVisitor final : public CsVisitor { public: UnitVisitor(::IceUtilInternal::Output&); - virtual bool visitUnitStart(const UnitPtr&); + bool visitUnitStart(const UnitPtr&) final; }; - class TypesVisitor : public CsVisitor + class TypesVisitor final : public CsVisitor { public: TypesVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitClassDefEnd(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitExceptionEnd(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitStructEnd(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); - virtual void visitDataMember(const DataMemberPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + void visitClassDefEnd(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitExceptionEnd(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitStructEnd(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; + void visitDataMember(const DataMemberPtr&) final; }; - class ResultVisitor : public CsVisitor + class ResultVisitor final : public CsVisitor { public: ResultVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual void visitOperation(const OperationPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + void visitOperation(const OperationPtr&) final; }; - class ProxyVisitor : public CsVisitor + class ProxyVisitor final : public CsVisitor { public: ProxyVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; }; // Generates the iceD helper methods in the server-side interface. @@ -172,28 +172,28 @@ namespace Slice void visitOperation(const OperationPtr&) final; }; - class HelperVisitor : public CsVisitor + class HelperVisitor final : public CsVisitor { public: HelperVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; }; - class DispatcherVisitor : public CsVisitor + class DispatcherVisitor final : public CsVisitor { public: DispatcherVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; private: void writeDispatch(const InterfaceDefPtr&); diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h index e9a7e541061..07c648c1a11 100644 --- a/cpp/src/slice2java/Gen.h +++ b/cpp/src/slice2java/Gen.h @@ -130,7 +130,7 @@ namespace Slice void writeSeeAlso(::IceUtilInternal::Output&, const UnitPtr&, const std::string&); }; - class Gen + class Gen final { public: Gen(const std::string&, const std::string&, const std::vector&, const std::string&); @@ -146,58 +146,58 @@ namespace Slice std::vector _includePaths; std::string _dir; - class PackageVisitor : public JavaVisitor + class PackageVisitor final : public JavaVisitor { public: PackageVisitor(const std::string&); - virtual bool visitModuleStart(const ModulePtr&); + bool visitModuleStart(const ModulePtr&) final; }; - class TypesVisitor : public JavaVisitor + class TypesVisitor final : public JavaVisitor { public: TypesVisitor(const std::string&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitClassDefEnd(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitExceptionEnd(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitStructEnd(const StructPtr&); - virtual void visitDataMember(const DataMemberPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + void visitClassDefEnd(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitExceptionEnd(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitStructEnd(const StructPtr&) final; + void visitDataMember(const DataMemberPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; }; - class CompactIdVisitor : public JavaVisitor + class CompactIdVisitor final : public JavaVisitor { public: CompactIdVisitor(const std::string&); - virtual bool visitClassDefStart(const ClassDefPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; }; - class HelperVisitor : public JavaVisitor + class HelperVisitor final : public JavaVisitor { public: HelperVisitor(const std::string&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; }; - class ProxyVisitor : public JavaVisitor + class ProxyVisitor final : public JavaVisitor { public: ProxyVisitor(const std::string&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; }; }; } diff --git a/cpp/src/slice2java/JavaUtil.cpp b/cpp/src/slice2java/JavaUtil.cpp index 0bc00c85d6e..140bec2f418 100644 --- a/cpp/src/slice2java/JavaUtil.cpp +++ b/cpp/src/slice2java/JavaUtil.cpp @@ -84,10 +84,10 @@ namespace return found ? "_" + name : name; } - class MetaDataVisitor : public ParserVisitor + class MetaDataVisitor final : public ParserVisitor { public: - virtual bool visitUnitStart(const UnitPtr& p) + bool visitUnitStart(const UnitPtr& p) final { static const string prefix = "java:"; @@ -125,7 +125,7 @@ namespace return true; } - virtual bool visitModuleStart(const ModulePtr& p) + bool visitModuleStart(const ModulePtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -134,7 +134,7 @@ namespace return true; } - virtual void visitClassDecl(const ClassDeclPtr& p) + void visitClassDecl(const ClassDeclPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -142,7 +142,7 @@ namespace p->setMetaData(metaData); } - virtual bool visitClassDefStart(const ClassDefPtr& p) + bool visitClassDefStart(const ClassDefPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -151,7 +151,7 @@ namespace return true; } - virtual bool visitExceptionStart(const ExceptionPtr& p) + bool visitExceptionStart(const ExceptionPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -160,7 +160,7 @@ namespace return true; } - virtual bool visitStructStart(const StructPtr& p) + bool visitStructStart(const StructPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -169,7 +169,7 @@ namespace return true; } - virtual void visitOperation(const OperationPtr& p) + void visitOperation(const OperationPtr& p) final { TypePtr returnType = p->returnType(); StringList metaData = getMetaData(p); @@ -212,7 +212,7 @@ namespace } } - virtual void visitDataMember(const DataMemberPtr& p) + void visitDataMember(const DataMemberPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p->type(), metaData, p->file(), p->line()); @@ -220,7 +220,7 @@ namespace p->setMetaData(metaData); } - virtual void visitSequence(const SequencePtr& p) + void visitSequence(const SequencePtr& p) final { static const string protobuf = "java:protobuf:"; static const string serializable = "java:serializable:"; @@ -282,7 +282,7 @@ namespace p->setMetaData(newMetaData); } - virtual void visitDictionary(const DictionaryPtr& p) + void visitDictionary(const DictionaryPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -290,7 +290,7 @@ namespace p->setMetaData(metaData); } - virtual void visitEnum(const EnumPtr& p) + void visitEnum(const EnumPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); @@ -298,7 +298,7 @@ namespace p->setMetaData(metaData); } - virtual void visitConst(const ConstPtr& p) + void visitConst(const ConstPtr& p) final { StringList metaData = getMetaData(p); metaData = validateType(p, metaData, p->file(), p->line()); diff --git a/cpp/src/slice2java/JavaUtil.h b/cpp/src/slice2java/JavaUtil.h index bc260b790ed..816636ed640 100644 --- a/cpp/src/slice2java/JavaUtil.h +++ b/cpp/src/slice2java/JavaUtil.h @@ -33,7 +33,7 @@ namespace Slice // bool isValidMethodParameterList(const DataMemberList&, int additionalUnits = 0); - class JavaOutput : public ::IceUtilInternal::Output + class JavaOutput final : public ::IceUtilInternal::Output { public: JavaOutput(); @@ -54,7 +54,7 @@ namespace Slice // void openClass(const std::string&, const std::string&, const std::string& = std::string()); - virtual void printHeader(); + void printHeader(); }; class JavaGenerator @@ -251,7 +251,7 @@ namespace Slice bool getSequenceTypes(const SequencePtr&, const std::string&, const StringList&, std::string&, std::string&) const; - virtual JavaOutput* createOutput(); + JavaOutput* createOutput(); static const std::string _getSetMetaData; diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp index c7e673f3a6d..1ff0fd84434 100644 --- a/cpp/src/slice2js/Gen.cpp +++ b/cpp/src/slice2js/Gen.cpp @@ -2342,12 +2342,6 @@ Slice::Gen::TypeScriptAliasVisitor::addAlias(const string& type, const string& p } } -bool -Slice::Gen::TypeScriptAliasVisitor::visitModuleStart(const ModulePtr&) -{ - return true; -} - bool Slice::Gen::TypeScriptAliasVisitor::visitClassDefStart(const ClassDefPtr& p) { diff --git a/cpp/src/slice2js/Gen.h b/cpp/src/slice2js/Gen.h index 1a7f70a4801..b8a387cda07 100644 --- a/cpp/src/slice2js/Gen.h +++ b/cpp/src/slice2js/Gen.h @@ -38,7 +38,7 @@ namespace Slice std::vector> _imports; }; - class Gen : public JsGenerator + class Gen final : public JsGenerator { public: Gen(const std::string&, const std::vector&, const std::string&, bool); @@ -58,19 +58,19 @@ namespace Slice bool _useStdout; bool _typeScript; - class ImportVisitor : public JsVisitor + class ImportVisitor final : public JsVisitor { public: ImportVisitor(::IceUtilInternal::Output&, std::vector, bool); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitOperation(const OperationPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitOperation(const OperationPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; // Emit the import statements for the given unit and return a list of the imported modules. std::set writeImports(const UnitPtr&); @@ -93,7 +93,7 @@ namespace Slice std::vector _includePaths; }; - class ExportsVisitor : public JsVisitor + class ExportsVisitor final : public JsVisitor { public: ExportsVisitor(::IceUtilInternal::Output&, std::set); @@ -109,36 +109,36 @@ namespace Slice std::set _exportedModules; }; - class TypesVisitor : public JsVisitor + class TypesVisitor final : public JsVisitor { public: TypesVisitor(::IceUtilInternal::Output&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: std::string encodeTypeForOperation(const TypePtr&); }; - class TypeScriptImportVisitor : public JsVisitor + class TypeScriptImportVisitor final : public JsVisitor { public: TypeScriptImportVisitor(::IceUtilInternal::Output&, bool); - virtual bool visitModuleStart(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); + bool visitModuleStart(const ModulePtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitStructStart(const StructPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; private: void addImport(const TypePtr&, const ContainedPtr&); @@ -151,18 +151,17 @@ namespace Slice int _nextImport; }; - class TypeScriptAliasVisitor : public JsVisitor + class TypeScriptAliasVisitor final : public JsVisitor { public: TypeScriptAliasVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitStructStart(const StructPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; void writeAlias(const UnitPtr&); @@ -173,21 +172,21 @@ namespace Slice std::vector> _aliases; }; - class TypeScriptVisitor : public JsVisitor + class TypeScriptVisitor final : public JsVisitor { public: TypeScriptVisitor(::IceUtilInternal::Output&, const std::vector>&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: void writeImports(); diff --git a/cpp/src/slice2matlab/Main.cpp b/cpp/src/slice2matlab/Main.cpp index 29c7a2990d5..46247de33ca 100644 --- a/cpp/src/slice2matlab/Main.cpp +++ b/cpp/src/slice2matlab/Main.cpp @@ -1578,19 +1578,19 @@ namespace // // CodeVisitor generates the Matlab mapping for a translation unit. // -class CodeVisitor : public ParserVisitor +class CodeVisitor final : public ParserVisitor { public: CodeVisitor(const string&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: struct MemberInfo diff --git a/cpp/src/slice2php/Main.cpp b/cpp/src/slice2php/Main.cpp index 5128a97f750..36ddc160f8b 100644 --- a/cpp/src/slice2php/Main.cpp +++ b/cpp/src/slice2php/Main.cpp @@ -55,21 +55,21 @@ namespace } // CodeVisitor generates the PHP mapping for a translation unit. -class CodeVisitor : public ParserVisitor +class CodeVisitor final : public ParserVisitor { public: CodeVisitor(IceUtilInternal::Output&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitInterfaceDecl(const InterfaceDeclPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + void visitClassDecl(const ClassDeclPtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + void visitInterfaceDecl(const InterfaceDeclPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: void startNamespace(const ContainedPtr&); diff --git a/cpp/src/slice2py/Python.cpp b/cpp/src/slice2py/Python.cpp index b683821b468..d9443b516e0 100644 --- a/cpp/src/slice2py/Python.cpp +++ b/cpp/src/slice2py/Python.cpp @@ -159,12 +159,12 @@ namespace // The PackageVisitor class creates the directory hierarchy to mirror the // Slice module hierarchy, and updates the __init__.py files as necessary. // - class PackageVisitor : public ParserVisitor + class PackageVisitor final : public ParserVisitor { public: static void createModules(const UnitPtr&, const string&, const string&); - virtual void visitModuleEnd(const ModulePtr&); + void visitModuleEnd(const ModulePtr&) final; private: PackageVisitor(StringList&); diff --git a/cpp/src/slice2py/PythonUtil.cpp b/cpp/src/slice2py/PythonUtil.cpp index a1f750ffc4f..a13c3cd1a47 100644 --- a/cpp/src/slice2py/PythonUtil.cpp +++ b/cpp/src/slice2py/PythonUtil.cpp @@ -36,23 +36,23 @@ namespace Slice { namespace Python { - class MetaDataVisitor : public ParserVisitor + class MetaDataVisitor final : public ParserVisitor { public: - virtual bool visitUnitStart(const UnitPtr&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitInterfaceDecl(const InterfaceDeclPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitOperation(const OperationPtr&); - virtual void visitDataMember(const DataMemberPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitUnitStart(const UnitPtr&) final; + bool visitModuleStart(const ModulePtr&) final; + void visitClassDecl(const ClassDeclPtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + void visitInterfaceDecl(const InterfaceDeclPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitOperation(const OperationPtr&) final; + void visitDataMember(const DataMemberPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: // @@ -77,12 +77,12 @@ namespace Slice // This statement allows the code generated for this translation unit to refer // to types residing in those included modules. // - class ModuleVisitor : public ParserVisitor + class ModuleVisitor final : public ParserVisitor { public: ModuleVisitor(Output&, set&); - virtual bool visitModuleStart(const ModulePtr&); + bool visitModuleStart(const ModulePtr&) final; private: Output& _out; @@ -92,23 +92,23 @@ namespace Slice // // CodeVisitor generates the Python mapping for a translation unit. // - class CodeVisitor : public ParserVisitor + class CodeVisitor final : public ParserVisitor { public: CodeVisitor(IceUtilInternal::Output&, set&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitInterfaceDecl(const InterfaceDeclPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + void visitClassDecl(const ClassDeclPtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + void visitInterfaceDecl(const InterfaceDeclPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: // diff --git a/cpp/src/slice2rb/RubyUtil.cpp b/cpp/src/slice2rb/RubyUtil.cpp index 92f3bf3a690..afa91b96fcd 100644 --- a/cpp/src/slice2rb/RubyUtil.cpp +++ b/cpp/src/slice2rb/RubyUtil.cpp @@ -39,23 +39,23 @@ namespace Slice // // CodeVisitor generates the Ruby mapping for a translation unit. // - class CodeVisitor : public ParserVisitor + class CodeVisitor final : public ParserVisitor { public: CodeVisitor(IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual void visitModuleEnd(const ModulePtr&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitInterfaceDecl(const InterfaceDeclPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitModuleStart(const ModulePtr&) final; + void visitModuleEnd(const ModulePtr&) final; + void visitClassDecl(const ClassDeclPtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + void visitInterfaceDecl(const InterfaceDeclPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: // diff --git a/cpp/src/slice2swift/Gen.h b/cpp/src/slice2swift/Gen.h index 37927f18b26..e455a2f777f 100644 --- a/cpp/src/slice2swift/Gen.h +++ b/cpp/src/slice2swift/Gen.h @@ -12,7 +12,7 @@ using namespace Slice; namespace Slice { - class Gen + class Gen final { public: Gen(const std::string&, const std::vector&, const std::string&); @@ -30,18 +30,18 @@ namespace Slice std::vector _includePaths; std::string _fileBase; - class ImportVisitor : public SwiftGenerator, public ParserVisitor + class ImportVisitor final : public SwiftGenerator, public ParserVisitor { public: ImportVisitor(IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); + bool visitModuleStart(const ModulePtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitStructStart(const StructPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; void writeImports(); @@ -54,71 +54,71 @@ namespace Slice std::vector _imports; }; - class TypesVisitor : public SwiftGenerator, public ParserVisitor + class TypesVisitor final : public SwiftGenerator, public ParserVisitor { public: TypesVisitor(IceUtilInternal::Output&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: IceUtilInternal::Output& out; }; - class ProxyVisitor : public SwiftGenerator, public ParserVisitor + class ProxyVisitor final : public SwiftGenerator, public ParserVisitor { public: ProxyVisitor(::IceUtilInternal::Output&); - virtual bool visitModuleStart(const ModulePtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); + bool visitModuleStart(const ModulePtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; private: IceUtilInternal::Output& out; }; - class ValueVisitor : public SwiftGenerator, public ParserVisitor + class ValueVisitor final : public SwiftGenerator, public ParserVisitor { public: ValueVisitor(::IceUtilInternal::Output&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual void visitClassDefEnd(const ClassDefPtr&); + bool visitClassDefStart(const ClassDefPtr&) final; + void visitClassDefEnd(const ClassDefPtr&) final; private: IceUtilInternal::Output& out; }; - class ObjectVisitor : public SwiftGenerator, public ParserVisitor + class ObjectVisitor final : public SwiftGenerator, public ParserVisitor { public: ObjectVisitor(::IceUtilInternal::Output&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; private: IceUtilInternal::Output& out; }; - class ObjectExtVisitor : public SwiftGenerator, public ParserVisitor + class ObjectExtVisitor final : public SwiftGenerator, public ParserVisitor { public: ObjectExtVisitor(::IceUtilInternal::Output&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitInterfaceDefEnd(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitInterfaceDefEnd(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; private: IceUtilInternal::Output& out; diff --git a/cpp/src/slice2swift/SwiftUtil.h b/cpp/src/slice2swift/SwiftUtil.h index 50e3e8c6e1b..ef81039c447 100644 --- a/cpp/src/slice2swift/SwiftUtil.h +++ b/cpp/src/slice2swift/SwiftUtil.h @@ -155,19 +155,19 @@ namespace Slice void writeDispatchOperation(::IceUtilInternal::Output&, const OperationPtr&); private: - class MetaDataVisitor : public ParserVisitor + class MetaDataVisitor final : public ParserVisitor { public: - virtual bool visitModuleStart(const ModulePtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitInterfaceDefStart(const InterfaceDefPtr&); - virtual void visitOperation(const OperationPtr&); - virtual bool visitExceptionStart(const ExceptionPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - virtual void visitConst(const ConstPtr&); + bool visitModuleStart(const ModulePtr&) final; + bool visitClassDefStart(const ClassDefPtr&) final; + bool visitInterfaceDefStart(const InterfaceDefPtr&) final; + void visitOperation(const OperationPtr&) final; + bool visitExceptionStart(const ExceptionPtr&) final; + bool visitStructStart(const StructPtr&) final; + void visitSequence(const SequencePtr&) final; + void visitDictionary(const DictionaryPtr&) final; + void visitEnum(const EnumPtr&) final; + void visitConst(const ConstPtr&) final; private: StringList validate(