tools/JavaSourceDocument.st
branchdevelopment
changeset 2718 b3fe904a2fc7
parent 2717 16564a7101b8
child 2721 ceb9ed115183
--- a/tools/JavaSourceDocument.st	Mon Sep 09 01:27:53 2013 +0100
+++ b/tools/JavaSourceDocument.st	Mon Sep 09 10:33:09 2013 +0100
@@ -176,88 +176,90 @@
         keysAndValuesDo: [:selector :method | 
             | descriptor  methodName  methodNodes  methodNode  source |
 
-            descriptor := method descriptor.
-            methodName := descriptor name.
-            methodName = '<init>' ifTrue: [
-                methodName := typeName.
-            ].
-            methodNodes := typeNode methods 
-                    select: [:each | 
-                        each selector = methodName 
-                            and: [ each arguments size == descriptor parameters size ]
-                    ].
-            methodNodes notEmptyOrNil ifTrue: [
-                methodNodes size == 1 ifTrue: [
-                    methodNode := methodNodes anElement.
-                ] ifFalse: [
-                    method hasLineNumberInformation ifTrue: [
-                        | line0  offset0 |
+            method isJavaMethod ifTrue:[
+                descriptor := method descriptor.
+                methodName := descriptor name.
+                methodName = '<init>' ifTrue: [
+                    methodName := typeName.
+                ].
+                methodNodes := typeNode methods 
+                        select: [:each | 
+                            each selector = methodName 
+                                and: [ each arguments size == descriptor parameters size ]
+                        ].
+                methodNodes notEmptyOrNil ifTrue: [
+                    methodNodes size == 1 ifTrue: [
+                        methodNode := methodNodes anElement.
+                    ] ifFalse: [
+                        method hasLineNumberInformation ifTrue: [
+                            | line0  offset0 |
 
-                        line0 := method lineNumberForPC: 1.
-                        offset0 := self sourceLineToOffset: line0.
-                        methodNodes := typeNode methods 
-                                select: [:each | 
-                                    offset0 between: each declarationSourceStart
-                                        and: each declarationSourceEnd + 1
-                                ].
-                        methodNodes size == 1 ifTrue: [
-                            methodNode := methodNodes anElement.
-                        ]
-                    ].
-                    methodNode isNil ifTrue: [
-                        | 
-                        "/ OK, search by parameter types...
-                         i |
+                            line0 := method lineNumberForPC: 1.
+                            offset0 := self sourceLineToOffset: line0.
+                            methodNodes := typeNode methods 
+                                    select: [:each | 
+                                        offset0 between: each declarationSourceStart
+                                            and: each declarationSourceEnd + 1
+                                    ].
+                            methodNodes size == 1 ifTrue: [
+                                methodNode := methodNodes anElement.
+                            ]
+                        ].
+                        methodNode isNil ifTrue: [
+                            | 
+                            "/ OK, search by parameter types...
+                             i |
 
-                        i := 1.
-                        [
-                            (methodNodes size > 1) and: [ i <= descriptor parameters size ]
-                        ] whileTrue: [
-                            | descr  descrArgTypeName  descrArgDimensions |
+                            i := 1.
+                            [
+                                (methodNodes size > 1) and: [ i <= descriptor parameters size ]
+                            ] whileTrue: [
+                                | descr  descrArgTypeName  descrArgDimensions |
 
-                            descr := descriptor parameters at: i.
-                            descrArgTypeName := descr javaClassName.
-                            descrArgDimensions := descr dimensions.
-                            descrArgTypeName first == $[ ifTrue: [
-                                descrArgTypeName := (JavaDescriptor baseTypes at: descrArgTypeName second) 
-                                        javaName.
-                                descrArgDimensions := descrArgDimensions + 1.
+                                descr := descriptor parameters at: i.
+                                descrArgTypeName := descr javaClassName.
+                                descrArgDimensions := descr dimensions.
+                                descrArgTypeName first == $[ ifTrue: [
+                                    descrArgTypeName := (JavaDescriptor baseTypes at: descrArgTypeName second) 
+                                            javaName.
+                                    descrArgDimensions := descrArgDimensions + 1.
+                                ].
+                                methodNodes := methodNodes 
+                                        select: [:each | 
+                                            | nodeArgType  nodeArgDimensions |
+
+                                            nodeArgType := (each arguments at: i) type getTypeName asStringWith: $/.
+                                            nodeArgDimensions := (each arguments at: i) type dimensions.
+                                            descrArgDimensions == nodeArgDimensions 
+                                                and: [ descrArgTypeName includesSubString: nodeArgType ]
+                                        ].
+                                i := i + 1.
                             ].
-                            methodNodes := methodNodes 
-                                    select: [:each | 
-                                        | nodeArgType  nodeArgDimensions |
-
-                                        nodeArgType := (each arguments at: i) type getTypeName asStringWith: $/.
-                                        nodeArgDimensions := (each arguments at: i) type dimensions.
-                                        descrArgDimensions == nodeArgDimensions 
-                                            and: [ descrArgTypeName includesSubString: nodeArgType ]
-                                    ].
-                            i := i + 1.
+                            methodNodes isEmpty ifTrue: [
+                                self error: 'No matching method node!!'.
+                            ].
+                            methodNodes size > 1 ifTrue: [
+                                self error: 'Cannot determine method!!'.
+                            ].
+                            methodNode := methodNodes anElement.
                         ].
-                        methodNodes isEmpty ifTrue: [
-                            self error: 'No matching method node!!'.
-                        ].
-                        methodNodes size > 1 ifTrue: [
-                            self error: 'Cannot determine method!!'.
-                        ].
-                        methodNode := methodNodes anElement.
                     ].
+                    methodNode notNil ifTrue: [
+                        source := JavaSourceRef new.
+                        source offset: methodNode declarationSourceStart.
+                        source 
+                            length: methodNode declarationSourceEnd - methodNode declarationSourceStart 
+                                    + 1.
+                        method setSource: source.
+                    ] ifFalse: [
+                        self error: 'Cannot determine method!!'.
+                    ]
                 ].
-                methodNode notNil ifTrue: [
-                    source := JavaSourceRef new.
-                    source offset: methodNode declarationSourceStart.
-                    source 
-                        length: methodNode declarationSourceEnd - methodNode declarationSourceStart 
-                                + 1.
-                    method setSource: source.
-                ] ifFalse: [
-                    self error: 'Cannot determine method!!'.
-                ]
             ].
         ]
 
     "Created: / 07-09-2013 / 01:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 09-09-2013 / 00:55:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 09-09-2013 / 10:28:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeSourceTree