parsers/java/PJImportDeclarationNode.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jun 2015 06:45:26 +0100
changeset 489 0ca7a70db0f5
parent 436 e1c44b571db9
permissions -rw-r--r--
Fix in codegen for inlined sequence nodes. For inlined sequence nodes, generate nested ifs rather than sequential code which does not work when inlined. The reason is that #codeReturn: in inline generates instvar assignment, not method return, so in sequential code the next child of a sequence will be probed even if previous failed. If that happends, the whole sequence fail and therefore we must generate nested ifs to correctly handle this w.r.t. inlining.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
435
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/parsers/java' }"
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
PJASTNode subclass:#PJImportDeclarationNode
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'nameNode isStatic isOnDemand'
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'PetitJava-AST'
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!PJImportDeclarationNode methodsFor:'accessing'!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
isOnDemand
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	^ isOnDemand
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
isOnDemand: anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	isOnDemand := anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
isStatic
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
	^ isStatic
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
isStatic: anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	isStatic := anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
nameNode
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	^ nameNode
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
nameNode: anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
	nameNode := anObject
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
! !
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
!PJImportDeclarationNode methodsFor:'visiting'!
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
acceptVisitor: aVisitor
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
	aVisitor visitImportDeclarationNode: self
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
! !
3bc08fb90133 Initial commit of PetitJava
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44