Skip to content

Commit 0f42d7f

Browse files
author
Troy Melhase
committed
Acounts for local names in addition to method names.
1 parent ee76cf7 commit 0f42d7f

File tree

6 files changed

+28
-15
lines changed

6 files changed

+28
-15
lines changed

java2python/compiler/template.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,20 @@ def adopt(self, child, index=-1):
9292

9393
def altIdent(self, name):
9494
""" Returns an alternate identifier for the one given. """
95+
#print '## looking for name:', name, 'parent count:', [(type(x), type(x.parent)) for x in self.parents()]
9596
for klass in self.parents(lambda v:v.isClass):
97+
#print '#### looking inside', klass.name, klass.variables
9698
if name in klass.variables:
9799
try:
98100
method = self.parents(lambda v:v.isMethod).next()
99101
except (StopIteration, ):
100102
return name
101103
if name in [p['name'] for p in method.parameters]:
102104
return name
105+
if name in method.variables:
106+
return name
103107
return ('cls' if method.isStatic else 'self') + '.' + name
108+
#print
104109
return name
105110

106111
def configHandler(self, part, suffix='Handler', default=None):

java2python/compiler/visitor.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,15 @@ def acceptDo(self, node, memo):
384384
tokens.BLOCK_SCOPE,
385385
tokens.CASE,
386386
tokens.DEFAULT,
387-
tokens.FOR_EACH
387+
tokens.FOR_EACH,
388+
tokens.METHOD_CALL,
389+
tokens.ARGUMENT_LIST,
388390
)
389391

390392
def acceptExpr(self, node, memo):
391393
""" Creates a new expression. """
392394
# this works but isn't precise
393-
if node.parentType in self.goodExprParents:
395+
if node.parentType in self.goodExprParents:
394396
return self.factory.expr(parent=self)
395397

396398
def acceptFor(self, node, memo):
@@ -519,7 +521,7 @@ def acceptTry(self, node, memo):
519521
def acceptReturn(self, node, memo):
520522
""" Creates a new return expression. """
521523
# again, this works but isn't as precise as it should be
522-
if node.parentType in self.goodReturnParents:
524+
if node.parentType: # in self.goodReturnParents:
523525
expr = self.factory.expr(left='return', parent=self)
524526
if node.children:
525527
expr.fs, expr.right = FS.lsr, self.factory.expr(parent=expr)
@@ -681,7 +683,7 @@ def acceptDot(self, node, memo):
681683
""" Accept and process a dotted expression. """
682684
expr = self.factory.expr
683685
self.fs = FS.l + '.' + FS.r
684-
self.left, self.right = visitors = expr(), expr()
686+
self.left, self.right = visitors = expr(parent=self), expr()
685687
self.zipWalk(node.children, visitors, memo)
686688

687689
def acceptExpr(self, node, memo):

java2python/config/default.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@
149149
(r'([\w.]+)\.size\(\)', r'len(\1)'),
150150
(r'(\w+)\.get\((.*?)\)', r'\1[\2]'),
151151
(r'(\s)(\S*?)(\.toString\(\))', r'\1\2.__str__()'),
152+
(r'(\s)def toString', r'\1def __str__'),
152153
(r'(\s)(\S*?)(\.toLowerCase\(\))', r'\1\2.lower()'),
153154
(r'(\s)(\S*?)(\.length\(\))', r'\1len(\2)'),
154155
(r'(.*?)IndexOutOfBoundsException\((.*?)\)', r'\1IndexError(\2)'),

test/Class12.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Class12 {
2+
private int c = 12;
3+
4+
private void x() {
5+
System.out.println('x');
6+
}
7+
8+
public static void main(String[] args) {
9+
Class12 c = new Class12();
10+
c.x();
11+
}
12+
}

test/Class7.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public static void main(String[] args) {
2121
System.out.println(a);
2222
System.out.println(b);
2323

24-
Class7 d = new Class7();
25-
d.x();
26-
d.y();
27-
d.z(3);
24+
Class7 c = new Class7();
25+
c.x();
26+
c.y();
27+
c.z(3);
2828
}
2929
}

test/ReallyQuickTest.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)