pyccel icon indicating copy to clipboard operation
pyccel copied to clipboard

Python join causes crash

Open Beliavsky opened this issue 5 years ago • 2 comments

pyccel on

print("boy") # works
print(" ".join(["boy","girl"])) # does not work

gives

Traceback (most recent call last): File "/usr/local/bin/pyccel", line 8, in sys.exit(pyccel()) File "/usr/local/lib/python3.8/dist-packages/pyccel/commands/console.py", line 235, in pyccel execute_pyccel(filename, File "/usr/local/lib/python3.8/dist-packages/pyccel/codegen/pipeline.py", line 134, in execute_pyccel parser.parse(verbose=verbose) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/parser.py", line 94, in parse parser = SyntaxParser(self._filename, **self._kwargs) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 133, in init self.parse(verbose=True) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 147, in parse ast = self._visit(self.fst) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 187, in _visit_Module body = [self._visit(v) for v in stmt.body] File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 187, in body = [self._visit(v) for v in stmt.body] File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 262, in _visit_Expr return self._visit(stmt.value) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 830, in _visit_Call args += self._visit(stmt.args) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 274, in _visit_list return self._treat_iterable(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 157, in _treat_iterable return [self._visit(i) for i in stmt] File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 157, in return [self._visit(i) for i in stmt] File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 837, in _visit_Call func = self._visit(stmt.func) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 170, in _visit result = getattr(self, syntax_method)(stmt) File "/usr/local/lib/python3.8/dist-packages/pyccel/parser/syntactic.py", line 823, in _visit_Attribute return DottedVariable(val, attr) File "/usr/local/lib/python3.8/dist-packages/pyccel/ast/core.py", line 2911, in new raise TypeError('Expecting a Variable or a function call, got instead {0} of type {1}'.format(str(lhs), TypeError: Expecting a Variable or a function call, got instead of type <class 'pyccel.ast.core.String'>

Beliavsky avatar Dec 18 '20 20:12 Beliavsky

we don't support python's string methods yet

saidctb avatar Dec 18 '20 20:12 saidctb

OK, thanks, I guessed as much. When pyccel sees a such a string method maybe it should print a message and quit.

Beliavsky avatar Dec 18 '20 21:12 Beliavsky

This now raises a neat error. I think we can consider it closed as we will create new issues when we finally get round to adding more complete support for strings

EmilyBourne avatar Oct 09 '23 09:10 EmilyBourne