Skip to content

Commit a51f8be

Browse files
committed
removed is_ctor member from Path
1 parent a2a0c7c commit a51f8be

File tree

2 files changed

+3
-5
lines changed

2 files changed

+3
-5
lines changed

include/artic/ast.h

-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ struct Path : public Node {
199199

200200
// Set during type-checking
201201
bool is_value = false;
202-
bool is_ctor = false;
203202

204203
Path(const Loc& loc, std::vector<Elem>&& elems)
205204
: Node(loc), elems(std::move(elems))

src/check.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,6 @@ const artic::Type* Path::infer(TypeChecker& checker, Ptr<Expr>* arg) {
635635
? checker.type_table.mod_type(*start_decl->as<ModDecl>())
636636
: checker.infer(*start_decl);
637637
is_value = elems.size() == 1 && start_decl->is_value();
638-
is_ctor = start_decl->isa<CtorDecl>();
639638

640639
// Inspect every element of the path
641640
for (size_t i = 0, n = elems.size(); i < n; ++i) {
@@ -693,11 +692,10 @@ const artic::Type* Path::infer(TypeChecker& checker, Ptr<Expr>* arg) {
693692
if (type_app)
694693
type = checker.type_table.type_app(type->as<StructType>(), type_app->type_args);
695694
is_value = false;
696-
is_ctor = true;
697695
} else {
698696
auto member = member_type(type_app, enum_type, *index);
699697
type = is_unit_type(member) ? type : checker.type_table.fn_type(member, type);
700-
is_value = is_ctor = true;
698+
is_value = true;
701699
}
702700
} else if (auto mod_type = type->isa<ModType>()) {
703701
auto index = mod_type->find_member(elems[i + 1].id.name);
@@ -711,7 +709,6 @@ const artic::Type* Path::infer(TypeChecker& checker, Ptr<Expr>* arg) {
711709
? checker.type_table.mod_type(*member.as<ModDecl>())
712710
: checker.infer(mod_type->member(*index));
713711
is_value = member.is_value();
714-
is_ctor = member.isa<CtorDecl>();
715712
} else
716713
return checker.type_expected(elem.loc, type, "module or enum");
717714
}
@@ -723,6 +720,8 @@ const artic::Type* Path::infer(TypeChecker& checker, Ptr<Expr>* arg) {
723720
const artic::Type* Path::infer(artic::TypeChecker& checker, bool value_expected, Ptr<artic::ast::Expr>* arg) {
724721
infer(checker, arg);
725722

723+
auto is_ctor = decl->isa<CtorDecl>();
724+
726725
// Treat tuple-like structure constructors as functions
727726
if (auto [type_app, struct_type] = match_app<StructType>(type);
728727
is_ctor && value_expected && struct_type && struct_type->is_tuple_like()) {

0 commit comments

Comments
 (0)