Skip to content

Commit 06ad19c

Browse files
committed
Use check_equal_type
1 parent 5d1cf47 commit 06ad19c

File tree

1 file changed

+1
-68
lines changed

1 file changed

+1
-68
lines changed

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -139,73 +139,6 @@ ASR::Module_t* load_module(Allocator &al, SymbolTable *symtab,
139139
return mod2;
140140
}
141141

142-
bool types_equal(const ASR::ttype_t &a, const ASR::ttype_t &b) {
143-
// TODO: If anyone of the input or argument is derived type then
144-
// add support for checking member wise types and do not compare
145-
// directly. From stdlib_string len(pattern) error.
146-
if (b.type == ASR::ttypeType::Derived || b.type == ASR::ttypeType::Class) {
147-
return true;
148-
}
149-
if (a.type == b.type) {
150-
// TODO: check dims
151-
// TODO: check all types
152-
switch (a.type) {
153-
case (ASR::ttypeType::Integer) : {
154-
ASR::Integer_t *a2 = ASR::down_cast<ASR::Integer_t>(&a);
155-
ASR::Integer_t *b2 = ASR::down_cast<ASR::Integer_t>(&b);
156-
if (a2->m_kind == b2->m_kind) {
157-
return true;
158-
} else {
159-
return false;
160-
}
161-
break;
162-
}
163-
case (ASR::ttypeType::Real) : {
164-
ASR::Real_t *a2 = ASR::down_cast<ASR::Real_t>(&a);
165-
ASR::Real_t *b2 = ASR::down_cast<ASR::Real_t>(&b);
166-
if (a2->m_kind == b2->m_kind) {
167-
return true;
168-
} else {
169-
return false;
170-
}
171-
break;
172-
}
173-
case (ASR::ttypeType::Complex) : {
174-
ASR::Complex_t *a2 = ASR::down_cast<ASR::Complex_t>(&a);
175-
ASR::Complex_t *b2 = ASR::down_cast<ASR::Complex_t>(&b);
176-
if (a2->m_kind == b2->m_kind) {
177-
return true;
178-
} else {
179-
return false;
180-
}
181-
break;
182-
}
183-
case (ASR::ttypeType::Logical) : {
184-
ASR::Logical_t *a2 = ASR::down_cast<ASR::Logical_t>(&a);
185-
ASR::Logical_t *b2 = ASR::down_cast<ASR::Logical_t>(&b);
186-
if (a2->m_kind == b2->m_kind) {
187-
return true;
188-
} else {
189-
return false;
190-
}
191-
break;
192-
}
193-
case (ASR::ttypeType::Character) : {
194-
ASR::Character_t *a2 = ASR::down_cast<ASR::Character_t>(&a);
195-
ASR::Character_t *b2 = ASR::down_cast<ASR::Character_t>(&b);
196-
if (a2->m_kind == b2->m_kind) {
197-
return true;
198-
} else {
199-
return false;
200-
}
201-
break;
202-
}
203-
default : return false;
204-
}
205-
}
206-
return false;
207-
}
208-
209142
template <typename T>
210143
bool argument_types_match(const Vec<ASR::ttype_t*> &args,
211144
const T &sub) {
@@ -215,7 +148,7 @@ bool argument_types_match(const Vec<ASR::ttype_t*> &args,
215148
ASR::Variable_t *v = LFortran::ASRUtils::EXPR2VAR(sub.m_args[i]);
216149
ASR::ttype_t *arg1 = args[i];
217150
ASR::ttype_t *arg2 = v->m_type;
218-
if (!types_equal(*arg1, *arg2)) {
151+
if (!ASRUtils::check_equal_type(arg1, arg2)) {
219152
return false;
220153
}
221154
}

0 commit comments

Comments
 (0)