Fixed issue with TypeMod.
This commit is contained in:
@@ -345,7 +345,7 @@ namespace MalachScript::Parser {
|
||||
if (!ParseType((const ParsedStatement*&)parameter.GetTypeStatement(), currentToken)) {
|
||||
LogError(Diagnostics::DiagnosticType::UnexpectedToken, currentToken->GetSpan());
|
||||
}
|
||||
ParseTypeMod(parameter.GetTypeMod());
|
||||
ParseTypeMod(parameter.GetTypeMod(), currentToken);
|
||||
ParseIdentifier(parameter.GetIdentifier(), currentToken);
|
||||
PROGRESS_TOKEN(currentToken);
|
||||
if (currentToken->GetKind() != LexTokenKind::CommaSymbol) {
|
||||
@@ -402,23 +402,23 @@ namespace MalachScript::Parser {
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
bool Parser::ParseTypeMod(TypeMod& typeMod) {
|
||||
if (_currentToken->GetKind() != LexTokenKind::AmpersandSymbol) {
|
||||
bool Parser::ParseTypeMod(TypeMod& typeMod, const LexToken*& currentToken) {
|
||||
if (currentToken->GetKind() != LexTokenKind::AmpersandSymbol) {
|
||||
return false;
|
||||
}
|
||||
PROGRESS_TOKEN(_currentToken);
|
||||
switch (_currentToken->GetKind()) {
|
||||
PROGRESS_TOKEN(currentToken);
|
||||
switch (currentToken->GetKind()) {
|
||||
case LexTokenKind::InKeyword:
|
||||
typeMod = TypeMod::RefIn;
|
||||
PROGRESS_TOKEN(_currentToken);
|
||||
PROGRESS_TOKEN(currentToken);
|
||||
return true;
|
||||
case LexTokenKind::OutKeyword:
|
||||
typeMod = TypeMod::RefOut;
|
||||
PROGRESS_TOKEN(_currentToken);
|
||||
PROGRESS_TOKEN(currentToken);
|
||||
return true;
|
||||
case LexTokenKind::InoutKeyword:
|
||||
typeMod = TypeMod::RefInOut;
|
||||
PROGRESS_TOKEN(_currentToken);
|
||||
PROGRESS_TOKEN(currentToken);
|
||||
return true;
|
||||
default: typeMod = TypeMod::RefInOut; return true;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace MalachScript::Parser {
|
||||
bool ParseType(const ParsedStatement*& out, const LexToken*& currentToken);
|
||||
bool ParseScope(std::vector<Identifier>& out, const LexToken*& currentToken);
|
||||
bool ParseParamList(const ParsedStatement*& out, const LexToken*& currentToken);
|
||||
bool ParseTypeMod(TypeMod& typeMod);
|
||||
bool ParseTypeMod(TypeMod& typeMod, const LexToken*& currentToken);
|
||||
bool ParseDataType(Identifier& out, const LexToken*& currentToken);
|
||||
|
||||
bool ParseVirtProp(const ParsedStatement*& out);
|
||||
|
||||
Reference in New Issue
Block a user