/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/// Returns a list of the statements where the given declaration is used as an /// rvalue (within the provided function). /// /// WARNING: incomplete behaviour/implementation for general-purpose use outside /// of escapesFunction(). This only detects very basic usages (see /// implementation for more details).
std::vector<const Stmt *> getUsageAsRvalue(const ValueDecl *ValueDeclaration, const FunctionDecl *FuncDecl);
/// This is the error enumeration for escapesFunction(), describing all the /// possible error cases. enumclass EscapesFunctionError {
ConstructorDeclNotFound = 1,
FunctionDeclNotFound,
FunctionIsBuiltin,
FunctionIsVariadic,
ExprNotInCall,
NoParamForArg,
ArgAndParamNotPointers
};
/// Required by the std::error_code system to convert our enum into a general /// error code.
std::error_code make_error_code(EscapesFunctionError);
/// Returns a (statement, decl) tuple if an argument from an argument list /// escapes the function scope through globals/statics/other things. The /// statement is where the value escapes the function, while the declaration /// points to what it escapes through. If the argument doesn't escape the /// function, the tuple will only contain nullptrs. /// If the analysis runs into an unexpected error or into an unimplemented /// configuration, it will return an error_code of type EscapesFunctionError /// representing the precise issue. /// /// WARNING: incomplete behaviour/implementation for general-purpose use outside /// of DanglingOnTemporaryChecker. This only covers a limited set of cases, /// mainly in terms of arguments and parameter types.
ErrorOr<std::tuple<const Stmt *, const Decl *>>
escapesFunction(const Expr *Arg, const FunctionDecl *FuncDecl, const Expr *const *Arguments, unsigned NumArgs);
/// Helper function taking a call expression.
ErrorOr<std::tuple<const Stmt *, const Decl *>>
escapesFunction(const Expr *Arg, const CallExpr *Call);
/// Helper function taking a construct expression.
ErrorOr<std::tuple<const Stmt *, const Decl *>>
escapesFunction(const Expr *Arg, const CXXConstructExpr *Construct);
/// Helper function taking an operator call expression.
ErrorOr<std::tuple<const Stmt *, const Decl *>>
escapesFunction(const Expr *Arg, const CXXOperatorCallExpr *OpCall);
#endif
Messung V0.5
¤ Dauer der Verarbeitung: 0.36 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.