Fixes several valgrind spotted issues.
This commit is contained in:
@@ -105,16 +105,23 @@ namespace MalachScript::Parser {
|
||||
public:
|
||||
class ParsedParameter {
|
||||
private:
|
||||
const ParsedTypeStatement* _typeStatement = nullptr;
|
||||
std::unique_ptr<const ParsedTypeStatement> _typeStatement = nullptr;
|
||||
TypeMod _typeMod = TypeMod::None;
|
||||
Identifier _identifier;
|
||||
const ParsedExpression* _defaultExpression = nullptr;
|
||||
std::unique_ptr<const ParsedExpression> _defaultExpression = nullptr;
|
||||
|
||||
public:
|
||||
ParsedParameter(){};
|
||||
ParsedParameter(const ParsedTypeStatement* typeStatement, TypeMod typeMod, const Identifier& identifier,
|
||||
const ParsedExpression* defaultExpression)
|
||||
: _typeStatement(typeStatement), _typeMod(typeMod), _identifier(identifier),
|
||||
_defaultExpression(defaultExpression){};
|
||||
|
||||
[[nodiscard]] const ParsedTypeStatement*& GetTypeStatement() noexcept { return _typeStatement; }
|
||||
[[nodiscard]] const ParsedTypeStatement* GetTypeStatement() const noexcept { return _typeStatement; }
|
||||
[[nodiscard]] std::unique_ptr<const ParsedTypeStatement>& GetTypeStatement() noexcept {
|
||||
return _typeStatement;
|
||||
}
|
||||
[[nodiscard]] const std::unique_ptr<const ParsedTypeStatement>& GetTypeStatement() const noexcept {
|
||||
return _typeStatement;
|
||||
}
|
||||
|
||||
[[nodiscard]] TypeMod& GetTypeMod() noexcept { return _typeMod; }
|
||||
[[nodiscard]] const TypeMod& GetTypeMod() const noexcept { return _typeMod; }
|
||||
@@ -122,18 +129,28 @@ namespace MalachScript::Parser {
|
||||
[[nodiscard]] Identifier& GetIdentifier() noexcept { return _identifier; }
|
||||
[[nodiscard]] const Identifier& GetIdentifier() const noexcept { return _identifier; }
|
||||
|
||||
[[nodiscard]] const ParsedExpression*& GetDefaultExpression() noexcept { return _defaultExpression; }
|
||||
[[nodiscard]] const ParsedExpression* GetDefaultExpression() const noexcept { return _defaultExpression; }
|
||||
[[nodiscard]] std::unique_ptr<const ParsedExpression>& GetDefaultExpression() noexcept {
|
||||
return _defaultExpression;
|
||||
}
|
||||
[[nodiscard]] const std::unique_ptr<const ParsedExpression>& GetDefaultExpression() const noexcept {
|
||||
return _defaultExpression;
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
std::vector<ParsedParameter> _parameters;
|
||||
std::vector<std::unique_ptr<const ParsedParameter>> _parameters;
|
||||
|
||||
public:
|
||||
ParsedParamListStatement(TextSpan span, std::vector<ParsedParameter> parameters)
|
||||
: ParsedStatementImpl<ParsedStatementKind::ParamList>(span), _parameters(std::move(parameters)){};
|
||||
ParsedParamListStatement(TextSpan span, const std::vector<const ParsedParameter*>& parameters)
|
||||
: ParsedStatementImpl<ParsedStatementKind::ParamList>(span), _parameters(parameters.size()) {
|
||||
for (size_t i = 0; i < parameters.size(); i++) {
|
||||
_parameters[i] = std::unique_ptr<const ParsedParameter>(parameters[i]);
|
||||
}
|
||||
};
|
||||
|
||||
[[nodiscard]] const std::vector<ParsedParameter>& GetParameters() const noexcept { return _parameters; }
|
||||
[[nodiscard]] const std::vector<std::unique_ptr<const ParsedParameter>>& GetParameters() const noexcept {
|
||||
return _parameters;
|
||||
}
|
||||
};
|
||||
|
||||
class ParsedFuncStatement : public ParsedStatementImpl<ParsedStatementKind::Func> {
|
||||
@@ -145,7 +162,7 @@ namespace MalachScript::Parser {
|
||||
bool _returnsReference;
|
||||
Identifier _identifier;
|
||||
std::unique_ptr<const ParsedStatement> _paramList;
|
||||
bool isConst;
|
||||
bool _isConst;
|
||||
FuncAttr _funcAttr;
|
||||
std::unique_ptr<const ParsedStatement> _statBlock;
|
||||
|
||||
@@ -156,7 +173,7 @@ namespace MalachScript::Parser {
|
||||
const ParsedStatement* statBlock)
|
||||
: ParsedStatementImpl<ParsedStatementKind::Func>(span), _isShared(isShared), _isExternal(isExternal),
|
||||
_access(access), _type(type), _returnsReference(returnsReference), _identifier(identifier),
|
||||
_paramList(paramList), isConst(isConst), _funcAttr(funcAttr), _statBlock(statBlock) {}
|
||||
_paramList(paramList), _isConst(isConst), _funcAttr(funcAttr), _statBlock(statBlock) {}
|
||||
|
||||
[[nodiscard]] inline bool IsShared() const noexcept { return _isShared; }
|
||||
[[nodiscard]] inline bool IsExternal() const noexcept { return _isExternal; }
|
||||
@@ -169,7 +186,7 @@ namespace MalachScript::Parser {
|
||||
[[nodiscard]] inline const std::unique_ptr<const ParsedStatement>& GetParamList() const noexcept {
|
||||
return _paramList;
|
||||
}
|
||||
[[nodiscard]] inline bool IsConst() const noexcept { return isConst; }
|
||||
[[nodiscard]] inline bool IsConst() const noexcept { return _isConst; }
|
||||
[[nodiscard]] inline FuncAttr GetFuncAttr() const noexcept { return _funcAttr; }
|
||||
[[nodiscard]] inline const std::unique_ptr<const ParsedStatement>& GetStatBlock() const noexcept {
|
||||
return _statBlock;
|
||||
|
||||
Reference in New Issue
Block a user