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'>
we don't support python's string methods yet
OK, thanks, I guessed as much. When pyccel sees a such a string method maybe it should print a message and quit.
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