@@ -1148,7 +1148,9 @@ def visit_Subscript(self, node):
11481148 )
11491149
11501150 def visit_Slice (self , node ):
1151- if self ._with_js :
1151+ if self ._with_dart :
1152+ lower = upper = step = 'null'
1153+ elif self ._with_js :
11521154 lower = upper = step = 'undefined'
11531155 else :
11541156 lower = upper = step = None
@@ -1310,7 +1312,7 @@ def _visit_assign_helper(self, node, target):
13101312 writer .write ('%s = %s' % (self .visit (target ), node_value ))
13111313
13121314 elif self ._with_dart and writer .is_at_global_level ():
1313- writer .write ('var %s = %s' % (self .visit (target ), node_value ))
1315+ writer .write ('JS(" var %s = %s") ' % (self .visit (target ), node_value ))
13141316 else :
13151317 writer .write ('%s = %s' % (self .visit (target ), node_value ))
13161318
@@ -1723,15 +1725,34 @@ def visit_FunctionDef(self, node):
17231725 else :
17241726 decorators .append ( decorator )
17251727
1726- if self ._with_js or javascript or self ._with_dart :
1728+ if self ._with_dart :
1729+ if node .args .vararg :
1730+ raise SyntaxError ( 'pure javascript functions can not take variable arguments (*args)' )
1731+ elif node .args .kwarg :
1732+ raise SyntaxError ( 'pure javascript functions can not take variable keyword arguments (**kwargs)' )
1733+
1734+ for dec in with_dart_decorators : writer .write ('@%s' % dec )
1735+
1736+ args = []
1737+ offset = len (node .args .args ) - len (node .args .defaults )
1738+ for i , arg in enumerate (node .args .args ):
1739+ a = arg .id
1740+ dindex = i - offset
1741+ if dindex >= 0 and node .args .defaults :
1742+ default_value = self .visit ( node .args .defaults [dindex ] )
1743+ args .append ( '%s=%s' % (a , default_value ) )
1744+ else :
1745+ args .append ( a )
1746+
1747+ writer .write ( 'def %s( %s ):' % (node .name , ',' .join (args )) )
1748+
1749+
1750+ elif self ._with_js or javascript :
17271751 if node .args .vararg :
17281752 raise SyntaxError ( 'pure javascript functions can not take variable arguments (*args)' )
17291753 elif node .args .kwarg :
17301754 raise SyntaxError ( 'pure javascript functions can not take variable keyword arguments (**kwargs)' )
17311755
1732- if self ._with_dart :
1733- for dec in with_dart_decorators :
1734- writer .write ('@%s' % dec )
17351756 args = [ a .id for a in node .args .args ]
17361757 writer .write ( 'def %s( %s ):' % (node .name , ',' .join (args )) )
17371758
@@ -1748,7 +1769,11 @@ def visit_FunctionDef(self, node):
17481769 a = ',' .join ( local_vars - global_vars )
17491770 writer .write ('var(%s)' % a )
17501771
1751- if self ._with_js or javascript or self ._with_dart :
1772+ #####################################################################
1773+ if self ._with_dart :
1774+ pass
1775+
1776+ elif self ._with_js or javascript :
17521777 if node .args .defaults :
17531778 offset = len (node .args .args ) - len (node .args .defaults )
17541779 for i , arg in enumerate (node .args .args ):
0 commit comments