Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 1 addition & 49 deletions src/parser/cxx/parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2603,20 +2603,7 @@ auto Parser::parse_call_expression(ExpressionAST*& yyast,
expect(TokenKind::T_RPAREN, ast->rparenLoc);
}

std::vector<const Type*> argumentTypes;

for (auto it = ast->expressionList; it; it = it->next) {
const Type* argumentType = nullptr;
if (it->value) argumentType = it->value->type;

argumentTypes.push_back(argumentType);
}

if (auto access = ast_cast<MemberExpressionAST>(ast->baseExpression)) {
if (ast_cast<DestructorIdAST>(access->unqualifiedId)) {
ast->type = control_->getVoidType();
}
}
check(ast);

return true;
}
Expand Down Expand Up @@ -2676,13 +2663,6 @@ auto Parser::parse_cpp_cast_expression(ExpressionAST*& yyast,
return true;
}

auto Parser::get_cv_qualifiers(const Type* type) const -> CvQualifiers {
CvQualifiers cv = CvQualifiers::kNone;
if (control_->is_const(type)) cv = merge_cv(cv, CvQualifiers::kConst);
if (control_->is_volatile(type)) cv = merge_cv(cv, CvQualifiers::kVolatile);
return cv;
}

auto Parser::parse_builtin_bit_cast_expression(ExpressionAST*& yyast,
const ExprContext& ctx) -> bool {
if (!lookat(TokenKind::T___BUILTIN_BIT_CAST)) return false;
Expand Down Expand Up @@ -5939,34 +5919,6 @@ auto Parser::is_volatile(CvQualifiers cv) const -> bool {
return cv == CvQualifiers::kVolatile || cv == CvQualifiers::kConstVolatile;
}

auto Parser::merge_cv(CvQualifiers cv1, CvQualifiers cv2) const
-> CvQualifiers {
CvQualifiers cv = CvQualifiers::kNone;
if (is_const(cv1) || is_const(cv2)) cv = CvQualifiers::kConst;
if (is_volatile(cv1) || is_volatile(cv2)) {
if (cv == CvQualifiers::kConst)
cv = CvQualifiers::kConstVolatile;
else
cv = CvQualifiers::kVolatile;
}
return cv;
}

auto Parser::ensure_prvalue(ExpressionAST*& expr) -> bool {
TypeChecker checker{unit};
checker.setScope(scope_);
checker.setReportErrors(config_.checkTypes);
return checker.ensure_prvalue(expr);
}

auto Parser::implicit_conversion(ExpressionAST*& expr,
const Type* destinationType) -> bool {
TypeChecker checker{unit};
checker.setScope(scope_);
checker.setReportErrors(config_.checkTypes);
return checker.implicit_conversion(expr, destinationType);
}

auto Parser::is_prvalue(ExpressionAST* expr) const -> bool {
if (!expr) return false;
return expr->valueCategory == ValueCategory::kPrValue;
Expand Down
9 changes: 0 additions & 9 deletions src/parser/cxx/parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -839,18 +839,9 @@ class Parser final {

[[nodiscard]] auto strip_parentheses(ExpressionAST* ast) -> ExpressionAST*;
[[nodiscard]] auto strip_cv(const Type*& type) -> CvQualifiers;
[[nodiscard]] auto merge_cv(CvQualifiers cv1, CvQualifiers cv2) const
-> CvQualifiers;
[[nodiscard]] auto is_const(CvQualifiers cv) const -> bool;
[[nodiscard]] auto is_volatile(CvQualifiers cv) const -> bool;

[[nodiscard]] auto ensure_prvalue(ExpressionAST*& expr) -> bool;

[[nodiscard]] auto implicit_conversion(ExpressionAST*& expr,
const Type* destinationType) -> bool;

[[nodiscard]] auto get_cv_qualifiers(const Type* type) const -> CvQualifiers;

[[nodiscard]] auto is_prvalue(ExpressionAST* expr) const -> bool;
[[nodiscard]] auto is_lvalue(ExpressionAST* expr) const -> bool;
[[nodiscard]] auto is_xvalue(ExpressionAST* expr) const -> bool;
Expand Down
Loading