Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [ATL]Bug report : crash when compilation error
[ATL]Bug report : crash when compilation error [message #52366] Fri, 13 July 2007 08:01 Go to next message
Eclipse UserFriend
Originally posted by: tristan.faure.c-s.fr

Hi i have a probleme with my ATL transformation

sometimes when i have a compilation error (example a quote missing)
eclipse crashes and i cannot reopen my ATL file except in text editor.

i hope you'll have the same error

the file is :
(compilation error = line 29 quote missing)
============================================================ =======
-- @atlcompiler atl2006
module umlFW2if; -- Module Template
create out : _IF from _in : UML;

------------------------------------------------------------ ----------
-- STRING CONSTANTS
------------------------------------------------------------ ----------

helper def: defaultGuardProvided : String =
'(({u2i__group_manager}u2i__leader).u2i__stack_length = 0)' ;
helper def : var_leader : String = 'u2i__leader' ;
helper def : fpar_callerObj : String = 'u2i__callerObj' ;
helper def : fpar_caller : String = 'u2i__caller' ;
helper def : fpar_waiting : String = 'u2i__waiting' ;
helper def : fpar_callee : String = 'u2i__callee' ;
helper def : fpar_leader : String = 'u2i__leader' ;
helper def : var_tmp : String = 'u2i__parvar_u2i__oid' ;
helper def : var_callerObj : String = 'u2i__parvar_callerObj' ;
helper def : var_caller : String = 'u2i__parvar_caller' ;
helper def : var_waiting : String = 'u2i__parvar_waiting' ;
helper def : var_obs_by : String = 'u2i__by' ;
helper def : var_obs_vars : String = 'u2i__vars' ;
helper def : var_obs_tmp : String = 'u2i__tmp_vars' ;
helper def : sig_callerObj : String = 'callerObj';
helper def : sig_caller : String = 'caller' ;
helper def : sig_callee : String = 'callee' ;
helper def : sig_waiting : String = 'waiting' ;
helper def : pre_call : String = 'u2i__call_' ;
helper def : pre_handler : String = 'u2i__handler_' ;
helper def : pre_observers_type : String = 'u2i__observer_vars_ ;
helper def : ster_class : String = 'FwClass' ;
helper def : ster_state_machine : String = 'FwStateMachine' ;
helper def : ster_trigger_operation : String = 'FwTriggerOperation' ;
helper def : ster_create : String = 'Create' ;
helper def : ster_constructor_root : String = 'OMEGAconstructorRoot' ;
helper def : ster_observer : String = 'OMEGAobserver' ;
helper def : state_default_top : String = 'u2i__default_top_state' ;
helper def : state_model_top : String = 'u2i__model_top_state' ;
helper def : action_language_name : String = 'OMAL' ;

------------------------------------------------------------ ----------
-- HELPERS
------------------------------------------------------------ ----------

helper context UML!Operation def : getqualifiedNameIF : String =
self.getQualifiedName().replaceAll(':','_')
;

helper context UML!Class def : getqualifiedNameIF : String =
self.getQualifiedName().replaceAll(':','_')
;

helper context UML!Package def : getqualifiedNameIF : String =
self.getQualifiedName().replaceAll(':','_')
;

helper context UML!Property def : myGetOpposite () : UML!Property =
self.getOpposite ()
;

helper context UML!Operation def : isConstructor : Boolean =
self.isStereotyped(thisModule.ster_create) or
self.isStereotyped(thisModule.ster_constructor_root)
;

helper def : getVarsFromAssociations (c : UML!Class) :
Sequence(UML!Property) =
UML!Association.allInstances()
->select(a | (a.memberEnd.first().type = c and
a.memberEnd.last().isNavigable()))
->collect(a | a.memberEnd.last())
;

helper def : getVarsFromCompositions (c : UML!Class) :
Sequence(UML!Property) =
UML!Association.allInstances()
->select(a | (a.memberEnd.first().type = c and
a.memberEnd.last().isNavigable() and a.memberEnd.last().aggregation =
#composite))
->collect(a | a.memberEnd.last())
;

helper def: getParametersMode(p : String) : IF!ParametersMode =
if (p = 'null') then
#null
else
if (p = 'out') then
#out
else
#null
endif
endif
;

helper context UML!Operation def : getBodyAction () : String =
if (not self.method.oclIsUndefined()) then
if (not self.method.first().oclIsUndefined()) then
if
(self.method.first().language->indexOf(thisModule.action_language_name) >
0) then
self.method.first().body->at(self.method.first().language->indexOf(thisModule.action_language_name))
else
''
endif
else
''
endif
else
''
endif
;

helper context UML!Transition def : getBodyAction () : String =
if (not self.effect.oclIsUndefined()) then
if (self.effect.body.size() > 0) then
if (self.effect.language->indexOf(thisModule.action_language_name) <>
0) then
self.effect.body->at(self.effect.language->indexOf(thisModule.action_language_name))
else
''
endif
else
''
endif
else
''
endif
;

helper context UML!State def : getOptionForState() : _IF!stateOptionType =
if (self.incoming.first().source.oclIsTypeOf(UML!Pseudostate)) then
#start
else
#null
endif
;

helper def : getDeadLine(type : String) : _IF!deadlineType =
if (type = 'lazy') then
#lazyO
else
#undefined
endif

;

helper context String def : getType () : String =
(
if (self = 'Integer') then
'integer'
else
'pid'
endif
) ;


-- get all which become a Process : Class and Operations
helper context UML!Package def : getProcesses() : Set(UML!Element) =
(
self.getClass().union(
self.getOperations()->select(o | not
o.isStereotyped(thisModule.ster_trigger_operation))
)->flatten()
);

helper context UML!Package def : getOperations() : Sequence(UML!Operation)
=
(
self.ownedMember->select(a|a.oclIsTypeOf(UML!Class))->collect(a |
a.ownedOperation)->flatten()--->select(o | not
o.isStereotyped(thisModule.ster_trigger_operation))
);

helper context UML!Package def : getClass() : Sequence(UML!Class) =
(
self.ownedMember
->select(a|a.oclIsTypeOf(UML!Class)
and not a.isStereotyped(thisModule.ster_observer))->flatten()
);

helper context UML!Package def : getObservers() : Sequence(UML!Class) =
(
self.ownedMember
->select(a|a.oclIsTypeOf(UML!Class)
and a.isStereotyped(thisModule.ster_observer))->flatten()
);

-- test if the stereotype provided is present
helper context UML!Element def : isStereotyped (s : String) : Boolean =
(
self.getAppliedStereotypes()->exists(e | e.name = s)
);

helper def : gettingProcessOwner (e : _IF!Element) : IF!Process =
(
if (e.oclIsUndefined()) then
e
else
if (e.oclIsTypeOf(_IF!Process)) then
e
else
if (e.oclIsTypeOf(_IF!State)) then
if (e.ownerState.oclIsUndefined ()) then
thisModule.gettingProcessOwner (e.owner)
else
thisModule.gettingProcessOwner (e.ownerState)
endif
else
thisModule.gettingProcessOwner (e.owner)
endif
endif
endif
);

-- GLOBAL DATA

helper def: mapSignals : Map(String, _IF!Signal) = Map{};

helper def: mapProcess : Map(String, _IF!Process) = Map{};

helper def : seqVarsGroupManager : Sequence(String) = Sequence {} ;

helper def : getCount : Integer = 1000 ;

------------------------------------------------------------ ----------
-- MATCHED RULES
------------------------------------------------------------ ----------

-- first Transformation => Package UML 2 a System IF
-- associated transformations : Class2Process
rule Package2System {
from
p : UML!Package (p.oclIsTypeOf(UML!Package))
using {
seqOperations : Sequence(UML!Operation) = p.getOperations() ;
seqClass : Sequence (UML!Class) = p.getClass() ;
priority_rules_umlprio_manager : String = '' ;
priority_rules_umlprio_token : String = '' ;
}
to
s : _IF!_System (
id <- p.name,
signal <- completesignal,
process <- p.getProcesses(),
process <- p.getObservers()->collect(o | thisModule.Class2Observer(o)),
process <- seqClass
->select (c | not c.ownedOperation->exists(o |
o.isStereotyped(thisModule.ster_constructor_root)))
->collect(c | thisModule.Class2DefaultConstProcess(c)),
-- constant for the array TODO see if the number has to be parameterized
constants <- thisModule.newConstant('MULT_STAR_MAX','10'),
signal <- seqOperations->collect(o |
thisModule.Operation2CallSignal(o)),
signal <- seqOperations->collect(o |
thisModule.Operation2ReturnSignal(o)),
signal <- seqClass->collect(o |thisModule.Class2DefaultConstSignal(o))
),
completesignal : _IF!Signal (
id <- 'u2i__complete'
)
do {
thisModule.mapSignals <-
thisModule.mapSignals.including(completesignal.id,completesi gnal) ;
s.process <- seqClass
->select (c | c.ownedOperation->exists(o |
o.isStereotyped(thisModule.ster_constructor_root)))
->collect(c | thisModule.Class2DefaultConstRootProcess(c)) ;
s.process <- thisModule.createGroupManager(p) ;
for (c in seqClass){
if (priority_rules_umlprio_manager.size()=0){
priority_rules_umlprio_manager <-
'(y instanceof ' + c.getqualifiedNameIF + ' and (({' +
c.getqualifiedNameIF + '}y).u2i__leader = x))' ;
}
else {
priority_rules_umlprio_manager <-
'(' + priority_rules_umlprio_manager + ') or '
+ '(y instanceof ' + c.getqualifiedNameIF + ' and (({' +
c.getqualifiedNameIF + '}y).u2i__leader = x))' ;
}
if (priority_rules_umlprio_token.size() = 0){
priority_rules_umlprio_token <-
'(x instanceof ' + c.getqualifiedNameIF + ' and
(({u2i__group_manager}({'+ c.getqualifiedNameIF
+'}x).u2i__leader).u2i__running = y))' ;
}
else {
priority_rules_umlprio_token <-
'(' + priority_rules_umlprio_token + ') or '
+ '(x instanceof ' + c.getqualifiedNameIF + ' and
(({u2i__group_manager}({'+ c.getqualifiedNameIF
+'}x).u2i__leader).u2i__running = y))' ;
}
}
priority_rules_umlprio_manager <- 'x < y if (' +
priority_rules_umlprio_manager + ' or false)' ;
priority_rules_umlprio_token <- 'x < y if (' +
priority_rules_umlprio_token + ' or false)' ;
s.rules <- thisModule.newPriorityRule (
'umlprio_manager_rule',
priority_rules_umlprio_manager
) ;
s.rules <- thisModule.newPriorityRule (
'umlprio_running_token_rule',
priority_rules_umlprio_token
) ;
}
}

-- Transformation => Class UML 2 a Process IF
-- associated transformations : State2State
-- Property2Variables
rule Class2Process {
from
c : UML!Class (c.oclIsTypeOf(UML!Class)
and c.isStereotyped(thisModule.ster_class)
and not c.isStereotyped(thisModule.ster_observer)) --and c.isActive
using {
aPriorityRule : _IF!PriorityRule = _IF!PriorityRule ;
}
to
s : _IF!Process (
id <- c.getqualifiedNameIF,
nbInstancesToStart <- '0',
variables <-
c.ownedMember->select(a|a.oclIsTypeOf(UML!Property))->collect(p |
thisModule.Property2Variables(p)),
-- default variables for a process
variables <- Sequence {
thisModule.newVariable (thisModule.var_leader,'pid',true),
thisModule.newVariable (thisModule.var_callerObj,'pid',false),
thisModule.newVariable (thisModule.var_caller,'pid',false),
thisModule.newVariable (thisModule.var_waiting,'pid',false)
},
--variables <- thisModule.getVarsFromAssociations(c)->collect(o |
thisModule.Property2Variables(o)),
ancestor <- #class,
------------------------------------------------------------ ---
--states <- thisModule.newFinalState,
states <- defaultState,
baseName <- c.owner.getqualifiedNameIF
),
defaultState : _IF!State (
id <- thisModule.state_default_top,
options <- #start,
transition <- c.ownedOperation
->select(o | not o.isStereotyped(thisModule.ster_trigger_operation) and
not o.isConstructor)
->collect(o | thisModule.Operation2Transition(o)),
subState <- c.ownedMember->select(e |
e.isStereotyped(thisModule.ster_state_machine))
)
do {
thisModule.manageAssociations(c,s);
}
}

rule StateMachine2State {
from
fsm : UML!StateMachine (fsm.isStereotyped(thisModule.ster_state_machine))
to
s : _IF!State (
id <- thisModule.state_model_top,
options <- #start,
-- TODO modifiy for pseudo state
subState <- fsm.region.first().subvertex->select (s |
s.oclIsTypeOf(UML!Pseudostate))->select(s | s.kind = #initial)->collect(s
| thisModule.InitialState2State(s)),
subState <- fsm.region.first().subvertex->select (s | not
s.oclIsTypeOf(UML!Pseudostate))
)
}

-- Transformation => State UML 2 a State IF
-- associated transformations : Transition2Transition
rule State2State {
from
v : UML!State (v.oclIsTypeOf(UML!State) and not
v.oclIsTypeOf(UML!Pseudostate))
to
s : _IF!State (
id <- v.name,
options <- #null, -- v.getOptionForState(),
transition <- v.owner.transition->select(t | t.source = v)->collect(t |
thisModule.Transition2Transition(t))
)
}



-- Transformation => Trigger UML 2 a Trigger IF
-- associated transformations : CallEvent2Signal
-- OpaqueExpression2Guard
rule Trigger2Trigger {
from
tri1 : UML!Trigger (tri1.event.oclIsTypeOf(UML!CallEvent))
using {
i : Integer = 0 ;
processTmp : _IF!Process = _IF!Process ;
signalName : String = thisModule.pre_call +
tri1.event.operation.getqualifiedNameIF ;

}
to
tri2 : _IF!Trigger (
input <- sc
),
sc : _IF!SignalCall (
-- getting the signal generated from the operation
signalReferenced <- thisModule.mapSignals.get(signalName),
effectiveParameters <- Sequence {
thisModule.newVariable('void','null',false),
thisModule.newVariable(thisModule.var_caller,'null',false),
thisModule.newVariable(thisModule.var_callerObj,'null',false ),
thisModule.newVariable('void','null',false)
},
effectiveParameters <- tri1.event.operation.ownedParameter->select(p |
p.direction <> #return)->collect(o | thisModule.Property2Variables(o))
)
do {



processTmp <- thisModule.gettingProcessOwner(sc) ;
processTmp.variables <- tri1.event.operation.ownedParameter
->select(p | p.direction <> #return
and not processTmp.variables->collect(v | v.name)->includes(p.name))
->collect(o | thisModule.Property2Variables(o)) ;

}
}

rule Constraint2Guard {
from
s : UML!Constraint (s.oclIsTypeOf(UML!Constraint))
using {
guard : String =
s.specification.body->at(s.specification.language->indexOf(thisModule.action_language_name))
;
}
to
g : _IF!Guard (
expression <- '(' + guard +') ' --and ' +
thisModule.defaultGuardProvided
)
}

rule Operation2Process {
from
o : UML!Operation (o.oclIsTypeOf(UML!Operation) and not
o.isStereotyped(thisModule.ster_trigger_operation))
using {
defaultStateOfProcessOwner : _IF!State = _IF!State ;
tmpState : _IF!State = _IF!State ;
}
to
p : _IF!Process (
id <- thisModule.pre_handler + o.getqualifiedNameIF,
states <- Sequence{w,a,e} ,
fParameters <- Sequence {
thisModule.newVariable(thisModule.fpar_waiting,'pid',false),
thisModule.newVariable(thisModule.fpar_caller,'pid',false),
thisModule.newVariable(thisModule.fpar_callerObj,'pid',false ),
thisModule.newVariable(thisModule.fpar_leader,'pid',false)
},
variables <- Sequence {
thisModule.newVariable(thisModule.fpar_callee,'pid',false),
thisModule.newVariable('newOne','pid',false)
},
ancestor <- #operation,
wasAFunction <- o.ownedParameter->select(p | p.direction =
#return).size() = 1,
fParameters <- o.ownedParameter->select(p | p.direction <>
#return)->collect(o | thisModule.Property2Variables(o)),
processCallee <- o.owner,
isConstructor <- o.isStereotyped(thisModule.ster_create),
nbInstancesToStart <- if
(o.isStereotyped(thisModule.ster_constructor_root)) then
'1'
else
'0'
endif,
baseName <- o.owner.owner.getqualifiedNameIF
),
w : _IF!State (
id <- 'w',
options <- #start,
transition <- wTransition
),
a : _IF!State (
id <- 'a',
options <- #unstable,
transition <- aTransition
),
aTransition : _IF!Transition (
--deadline <- thisModule.getDeadLine(),
-- TODO faire ca plus propre que je check le bon langage
statement <-
o.getBodyAction(),
ifcode <- false,
nextState <- e
),
wTransition : _IF!Transition (
--deadline <- thisModule.getDeadLine(),
statement <- if (o.isConstructor) then
'informal "--call default constructor of ' +
o.owner.getqualifiedNameIF + '-- " ; \n '
+ 'fork u2i__default_constructor_' + o.owner.getqualifiedNameIF +
'(self, self, u2i__leader, true) ;'
else
''
endif,
ifcode <- o.isConstructor
),
e : _IF!State (
id <- 'e',
options <- #unstable,
transition <- eTransition
),
eTransition : _IF!Transition (
ifcode <- true
)
do {
eTransition.statement <- 'task ({u2i__group_manager}({' +
o.owner.getqualifiedNameIF + '}u2i__callee).u2i__leader).u2i__stack_length
:= (({u2i__group_manager}({' + o.owner.getqualifiedNameIF +
'}u2i__callee).u2i__leader).u2i__stack_length - 1);\n' ;
if (o.isConstructor) {
eTransition.statement <- eTransition.statement
+ '\tinformal "--return --";\n'
+ '\toutput u2i__return_' + o.getqualifiedNameIF + '(newOne,
newOne) to u2i__caller;\n' ;
tmpState <- thisModule.createDefaultStateW(o,a) ;
p.states <- tmpState ;
wTransition.nextState <- tmpState ;
}
else {
wTransition.nextState <- a ;
}

eTransition.statement <- eTransition.statement
+ '\tinformal "--yelding control from ' +
o.owner.getqualifiedNameIF + '--";\n'
+ '\toutput u2i__complete() to u2i__waiting;\n' ;
tmpState <- thisModule.newFinalState () ;
p.states <- tmpState ;
eTransition.nextState <- tmpState ;
}
}

------------------------------------------------------------ ----------
-- CALLED RULES
------------------------------------------------------------ ----------

rule newEmptyGuard(){
to
g : _IF!Guard (
expression <- ''--thisModule.defaultGuardProvided
)
do {
g ;
}
}

rule newFinalState () {
to
s : _IF!FinalState ()
do {
s ;
}
}

rule newState(sid : String, start : Boolean) {
to
s : _IF!State (
id <- sid,
options <- if (start) then
#start
else
#null
endif
)
do {
s ;
}
}

rule newVariable(sid : String, thetype : String, public : Boolean) {
to
v : _IF!Vars (
name <- sid,
type <- thetype,
isPublic <- public
)
do {
v ;
}
}

rule newVariableWithOwner(sid : String, thetype : String, public :
Boolean, owner : String) {
to
v : _IF!Vars (
name <- sid,
type <- thetype,
isPublic <- public,
ownerName <- owner
)
do {
v ;
}
}

rule newPriorityRule(sid : String,exp : String) {
to
p : _IF!PriorityRule (
id <- sid,
expression <- exp
)
do {
p ;
}
}

rule newConstant(sid : String, val : String) {
to
v : _IF!Vars (
name <- sid,
value <- val
)
do {
v ;
}
}

rule newType (id : String, statement : String) {
to
t : _IF!PersonnalType (
name <- id,
declaration <- statement
)
do {
t ;
}
}

rule newTransition () {
to
t : _IF!Transition (

)
do {
t ;
}
}

rule newTrigger (signal : String, parameters : Sequence(String)) {
to
t : _IF!Trigger (
input <- aSc
),
aSc : _IF!SignalCall (
signalReferenced <- thisModule.mapSignals->get(signal)
)
do {
if (not parameters->isEmpty()) {
for (s in parameters){
aSc.effectiveParameters <- thisModule.newConstant(s,'') ;
}
}

t ;
}
}

rule createGroupManager (pack : UML!Package) {
using {
seqOperations : Sequence(UML!Operation) = pack.getOperations() ;
max : Integer = 0 ;
i : Integer = 1 ;
name : String = '' ;
}
to
p : _IF!Process (
id <- 'u2i__group_manager',
nbInstancesToStart <- '0',
variables <- thisModule.newVariable ('u2i__running','pid',true),
variables <- thisModule.newVariable
('u2i__stack_length','integer',true),
variables <- thisModule.newVariable ('u2i__parvar_caller','pid',false),
variables <- thisModule.newVariable
('u2i__parvar_callerObj','pid',false),
variables <- thisModule.newVariable ('u2i__parvar_callee','pid',false),
-- TODO manage u2i parvar
states <- w
),
w : _IF!State (
id <- 'w',
options <- #start,
transition <- seqOperations
->select(o | not o.isStereotyped(thisModule.ster_create) and not
o.isStereotyped(thisModule.ster_constructor_root))
->collect(o | thisModule.Operation2GroupManagerTransition(o))
)
do {
--seq <- seqOperations->collect(o | o.ownedParameter->select(p |
p.direction <> #return).size()) ;
for (v in thisModule.seqVarsGroupManager){
name <- thisModule.var_tmp+ i.toString() ;
i <- i + 1 ;
p.variables <- thisModule.newVariable(name,v,false) ;

}
--max <- seq->iterate(e ; res : Integer = 0 |
-- if (e > res) then
-- e
-- else
-- res
-- endif
--);
--while (i <= res){
-- p.variables <- thisModule.newVariable(thisModule.var_tmp +
i.toString(),'pid',)
-- refaire en prenant compte le type de param !!!
-- i <- i + 1 ;
--}

p ;
}
}

rule manageAssociations (c : UML!Class, s : IF!Process){
using {
type : String = '' ;
typeStatement : String = '' ;
typeVar : String = '' ;
}
do {
for (a in thisModule.getVarsFromAssociations(c)){
typeVar <- a.type.name.getType() ;
if (a.upper.toString() = '1') {
type <- typeVar ;
}
else {
type <- 'u2i__assoc_MULT_STAR_MAXary___af__' +
thisModule.getCount.toString();
thisModule.getCount <- thisModule.getCount + 1 ;
if (a.upper.toString() = '-1') {
typeStatement <- 'array[MULT_STAR_MAX] of ' + typeVar +' ;' ;
s.types <- thisModule.newType(type,typeStatement);
}
else {
s.types <- thisModule.newType(type,'array[' + a.upper.toString() + ']
of ' + a.type.name.getType() + ';');
}

}
s.variables <-
thisModule.newVariableWithOwner(a.name,type,true,a.type.getq ualifiedNameIF)
;
}
}

}

rule createDefaultStateW (o : UML!Operation, a : _IF!State){
to
w1 : _IF!State (
id <- 'w1',
transition <- w2TransitionReturnConstructor,
transition <- w2Complete
),
w2TransitionReturnConstructor : _IF!Transition (
--deadline <- thisModule.getDeadLine(),
statement <- 'task u2i__callee := newOne ;\n'
+ '\tinformal "-- getting new object --" ;',
ifcode <- true,
trigger <- tReturnDefaultConstructor
),
w2Complete : _IF!Transition (
--deadline <- thisModule.getDeadLine(),
statement <- 'informal "-- getting back control --" ; ',
ifcode <- true,
nextState <- a,
trigger <- tComplete
),
tReturnDefaultConstructor : _IF!Trigger (
input <- scReturnDefaultConstructor
),
tComplete : _IF!Trigger (
input <- scComplete
),
scReturnDefaultConstructor : _IF!SignalCall (
signalReferenced <-
thisModule.mapSignals.get('u2i__return_default_constructor_' +
o.owner.getqualifiedNameIF),
effectiveParameters <- thisModule.newVariable('newOne','',true),
effectiveParameters <- thisModule.newVariable('newOne','',true)
),
scComplete : _IF!SignalCall (
signalReferenced <-thisModule.mapSignals.get('u2i__complete')
)
do {
w1 ;
}
}

------------------------------------------------------------ ----------
-- LAZY RULES
------------------------------------------------------------ ----------

-- Transformation => Transition UML 2 a Transition IF
-- associated transformations : Trigger2Trigger
lazy rule Transition2Transition {
from
t : UML!Transition (t.oclIsTypeOf(UML!Transition))
to
t2 : _IF!Transition (
trigger <- t.trigger.first(),
statement <- t.getBodyAction (),
discreteGuard <-
if (t.ownedRule.size() = 0) then
thisModule.newEmptyGuard()
else
if
(t.ownedRule.first().specification.language->indexOf(thisModule.action_language_name)
< 1) then
thisModule.newEmptyGuard()
else
t.ownedRule.first()
endif
endif,
deadline <- thisModule.getDeadLine('lazy'),
nextState <- t.target,
fromStateMachine <- true,
running <- thisModule.gettingProcessOwner(t).oclIsKindOf(_IF!Process)
)
}

lazy rule InitialState2State {
from
s : UML!Pseudostate (s.kind = #initial)
to
si : _IF!State (
id <- 'u2i__init',
options <- #start,
transition <- s.owner.transition->select(t | t.source = s)->collect(t |
thisModule.Transition2Transition(t))
)
}

lazy rule Operation2Transition {
from
o : UML!Operation (not
o.isStereotyped(thisModule.ster_trigger_operation))
using {
signalName : String = thisModule.pre_call + o.getqualifiedNameIF;
processOwner : _IF!Process = _IF!Process ;
nbVarOid : Integer = 0 ;
nbParams : Integer = 0 ;
indice : Integer = 1 ;
}
to
t : _IF!Transition (
deadline <- #lazyO,
statement <- 'informal "--dynamic linking to ' + o.owner.name + '::' +
o.name +' --"; \n' +
'\t\tfork ' + thisModule.pre_handler + o.getqualifiedNameIF
+'(u2i__parvar_waiting, u2i__parvar_caller, u2i__parvar_callerObj, self',
trigger <- aTrigger,
ifcode <- true
),
aTrigger : _IF!Trigger (
input <- sc
),
sc : _IF!SignalCall (
signalReferenced <- thisModule.mapSignals.get(signalName),
effectiveParameters <- Sequence {
thisModule.newVariable(thisModule.var_waiting,'null',false),
thisModule.newVariable(thisModule.var_caller,'null',false),
thisModule.newVariable(thisModule.var_callerObj,'null',false ),
thisModule.newVariable('void','null',false)
}
)
do {
'test'.toString().println() ;
processOwner <- _IF!Process.allInstances()
->select(p | p.id = o.owner.getqualifiedNameIF).first() ;
--processOwner <- thisModule.gettingProcessOwner(t) ;
if (not processOwner.oclIsUndefined()) {
-- counting the actual number of temp var
nbVarOid <- processOwner.variables
->select(v | v.name.startsWith(thisModule.var_tmp)).size() ;
nbParams <- o.ownedParameter->select(p | p.direction <> #return).size()
;
-- for each parameter adding the host temp var
for (p in o.ownedParameter->select(p | p.direction <> #return)){
t.statement <- t.statement + ', ' + thisModule.var_tmp +
indice.toString() ;
sc.effectiveParameters <- thisModule.newVariable(thisModule.var_tmp +
indice.toString(),p.type.name.getType(),false) ;
if (indice > nbVarOid) {
processOwner.variables <- thisModule.newVariable(thisModule.var_tmp +
indice.toString(),p.type.name.getType(),false) ;
}
indice <- indice + 1 ;
}
}
t.statement <- t.statement + ') ;' ;
}
}

lazy rule Property2Variables {
from
p : UML!Property (p.oclIsTypeOf(UML!Property))
to
v : _IF!Vars (
name <- p.name,
type <- p.type.name.getType(),
isPublic <- true,
ownerName <- p.owner.getqualifiedNameIF
)
do {
--v.name.println () ;
--p.direction.toString().println() ;
}
}



lazy rule Operation2ReturnSignal {
from
o : UML!Operation
to
s : _IF!Signal (
id <- 'u2i__return_' + o.getqualifiedNameIF,
-- default parameters for a return signal
fparameters <- if (o.isConstructor) then
Sequence {
thisModule.newVariable (thisModule.sig_callerObj,'pid',false),
thisModule.newVariable (thisModule.sig_callee,'pid',false)
}
else
Sequence {
thisModule.newVariable (thisModule.sig_callerObj,'pid',false),
thisModule.newVariable (thisModule.sig_callee,'pid',false),
o.ownedParameter->select(e | e.direction = #return)->collect(o |
thisModule.Property2Variables(o))
}
endif,
processFromSameAncestor <- o
)
do {
thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;
}
}

lazy rule Operation2CallSignal {
from
o : UML!Operation
to
s : _IF!Signal (
id <- thisModule.pre_call + o.getqualifiedNameIF,
-- default parameters for a call signal
fparameters <- Sequence {
thisModule.newVariable (thisModule.sig_waiting,'pid',false),
thisModule.newVariable (thisModule.sig_callee,'pid',false),
thisModule.newVariable (thisModule.sig_callerObj,'pid',false),
thisModule.newVariable (thisModule.sig_callee,'pid',false),
o.ownedParameter->select(e | e.direction <> #return)->collect(p |
thisModule.Property2Variables(p))
},
processFromSameAncestor <- o

)
do {
thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;
}
}

lazy rule Class2DefaultConstSignal {
from
c : UML!Class
to
s : _IF!Signal (
id <- 'u2i__return_default_constructor_' + c.getqualifiedNameIF,
fparameters <- Sequence {
thisModule.newVariable ('proc','pid',false),
thisModule.newVariable (thisModule.var_leader,'pid',false)
}
)
do {
thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;
}
}

lazy rule Operation2GroupManagerTransition {
from
o : UML!Operation
using {
signalName : String = thisModule.pre_call + o.getqualifiedNameIF ;
i : Integer = 1 ;
processOwner : _IF!Process = _IF!Process ;
tmpName : String = '' ;
tmpVar : _IF!Vars = _IF!Vars ;
}
to
t : _IF!Transition (
deadline <- thisModule.getDeadLine('lazy'),
ifcode <- true,
statement <-
'\t\tinformal "--manager forwarding call--";\n'
+ '\t\ttask u2i__running := u2i__parvar_callee;\n',
discreteGuard <- g,
trigger <- tr
),
g : _IF!Guard (
expression <- '(u2i__stack_length = 0)'
),
tr : _IF!Trigger (
input <- sc
),
sc : _IF!SignalCall (
signalReferenced <- thisModule.mapSignals.get(signalName)
)
do {
i <- thisModule.seqVarsGroupManager.size() + 1 ;
sc.effectiveParameters <- Sequence {
thisModule.newConstant('void',''),
thisModule.newConstant('u2i__parvar_caller',''),
thisModule.newConstant('u2i__parvar_callerObj',''),
thisModule.newConstant('u2i__parvar_callee','')
} ;
t.statement <- t.statement +
'\t\toutput ' + signalName + '(nil, u2i__parvar_caller,
u2i__parvar_callerObj, u2i__parvar_callee' ;
for (p in o.ownedParameter->select(p | p.direction <> #return)){
tmpName <- thisModule.var_tmp + i.toString() ;
i <- i + 1 ;
thisModule.seqVarsGroupManager <-
thisModule.seqVarsGroupManager.including(p.type.name.getType ());
sc.effectiveParameters <- thisModule.newConstant(tmpName,'');
t.statement <- t.statement + ', ' + tmpName ;
}
t.statement <- t.statement + ') to u2i__parvar_callee ;' ;
}
}

lazy rule Class2DefaultConstProcess {
from
c : UML!Class
using {
stateFinal : _IF!FinalState = thisModule.newFinalState() ;
}
to
p : _IF!Process (
id <- 'u2i__default_constructor_' + c.getqualifiedNameIF,
fParameters <- Sequence {
thisModule.newVariable (thisModule.fpar_waiting,'pid',false),
thisModule.newVariable (thisModule.fpar_caller,'pid',false),
thisModule.newVariable (thisModule.var_leader,'pid',false),
thisModule.newVariable ('u2i__inside_user_constructor','boolean',false)
},
variables <- Sequence {
thisModule.newVariable('newOne','pid',false),
thisModule.newVariable('child','pid',false)
},
states <- stateFinal,
states <- stateWithBody
),
stateWithBody : _IF!State (
id <- 'w',
options <- #start,
transition <- aTransition
),
aTransition : _IF!Transition (
deadline <- thisModule.getDeadLine(''),
nextState <- stateFinal,
statement <-

if (c.isActive) then
-- default code for the default constructor of an active Class
'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' +
'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' +
'\t({' + c.getqualifiedNameIF + '}newOne).u2i__leader := fork
u2i__group_manager();\n' +
'\tif u2i__inside_user_constructor then\n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' +
'\telse \n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' +
'\tendif \n' +
'\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n' +
'\tinformal "--return --";\n' +
'\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF
+ '(newOne, newOne) to u2i__caller;\n'+
'\tinformal "--yelding control --";\n' +
'\toutput u2i__complete() to u2i__waiting;\n'
else
-- default code for the default constructor of a Class
'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' +
'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' +
'\ttask ({' + c.getqualifiedNameIF + '}newOne).u2i__leader :=
u2i__leader ;\n' +
'\tif u2i__inside_user_constructor then\n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' +
'\telse \n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' +
'\tendif \n' +
'\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n' +
'\tinformal "--return --";\n' +
'\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF
+ '(newOne, newOne) to u2i__caller;\n'+
'\tinformal "--yelding control --";\n' +
'\toutput u2i__complete() to u2i__waiting;\n'
endif,
ifcode <- true
)
}

lazy rule Class2DefaultConstRootProcess {
from
c : UML!Class
using {
stateFinal : _IF!FinalState = thisModule.newFinalState() ;
stateTmp : _IF!State = _IF!State ;
transitionTmp : _IF!Transition = _IF!Transition ;
parameters : Sequence (String) = Sequence{'void','child'} ;
parametersEmpty : Sequence (String) = Sequence {} ;
i : Integer = 1 ;
defaultConstName : String = '' ;
}
to
p : _IF!Process (
id <- 'u2i__default_constructor_' + c.getqualifiedNameIF,
fParameters <- Sequence {
thisModule.newVariable (thisModule.fpar_waiting,'pid',false),
thisModule.newVariable (thisModule.fpar_caller,'pid',false),
thisModule.newVariable (thisModule.var_leader,'pid',false),
thisModule.newVariable ('u2i__inside_user_constructor','boolean',false)
},
variables <- Sequence {
thisModule.newVariable('newOne','pid',false),
thisModule.newVariable('child','pid',false)
},
states <- stateFinal,
states <- stateWithBody
),
stateWithBody : _IF!State (
id <- 'w',
options <- #start,
transition <- aTransition
),
aTransition : _IF!Transition (
deadline <- thisModule.getDeadLine(''),
statement <-
'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' +
'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' +
'\t({' + c.getqualifiedNameIF + '}newOne).u2i__leader := fork
u2i__group_manager();\n' +
'\tif u2i__inside_user_constructor then\n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' +
'\telse \n' +
'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' +
'\tendif \n'
,
ifcode <- true
)
do {
transitionTmp <- aTransition ;
for (pr in thisModule.getVarsFromCompositions(c)){
if (i <= thisModule.getVarsFromCompositions(c).size()){
if (transitionTmp.statement.oclIsUndefined()) {
transitionTmp.statement <- '' ;
}
transitionTmp.statement <- transitionTmp.statement +
'\tinformal"--create new sub-component' + pr.type.name + '--";\n'
+ '\tfork u2i__default_constructor_' + pr.type.getqualifiedNameIF
+'(self, self, ({' + c.getqualifiedNameIF + '}newOne).u2i__leader,
false);';
}
stateTmp <- thisModule.newState('w' + i.toString(),false) ;
if (i <= thisModule.getVarsFromCompositions(c).size() ) {
transitionTmp.nextState <- stateTmp ;
}
p.states <- stateTmp ;
-- transition for return of default constructor
transitionTmp <- thisModule.newTransition() ;
transitionTmp.deadline <- thisModule.getDeadLine('') ;
transitionTmp.ifcode <- true ;
defaultConstName <- 'u2i__return_default_constructor_' +
pr.type.getqualifiedNameIF ;
transitionTmp.trigger <-
thisModule.newTrigger(defaultConstName,parameters);
transitionTmp.statement <-
'\tinformal "-- getting return into ' + pr.name + ' --";\n'
+ '\ttask ({' + c.getqualifiedNameIF + '}newOne).' + pr.name + ' :=
child ;' ;
stateTmp.transition <- transitionTmp ;
-- transition for return of complete
transitionTmp <- thisModule.newTransition() ;
transitionTmp.trigger <-
thisModule.newTrigger('u2i__complete',parametersEmpty) ;
transitionTmp.ifcode <- true ;
transitionTmp.deadline <- thisModule.getDeadLine('') ;
stateTmp.transition <- transitionTmp ;
i <- i + 1 ;
}
transitionTmp.nextState <- stateFinal ;
transitionTmp.statement <-
'\tinformal "--getting back control by
u2i__default_constructor_root--";\n'
+ '\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n'
+ '\tinformal "--return--";\n'
+ '\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF
+ '(newOne, newOne) to u2i__caller ;\n'
+ '\tinformal "--yelding control--";\n'
+ '\toutput u2i__complete() to u2i__waiting;' ;
}
}

lazy rule Class2Observer {
from
c : UML!Class (c.oclIsTypeOf(UML!Class) and
c.isStereotyped(thisModule.ster_class)) --and c.isActive
using {
aPriorityRule : _IF!PriorityRule = _IF!PriorityRule ;
}
to
s : _IF!Observer (
id <- c.getqualifiedNameIF,
variables <-
c.ownedMember->select(a|a.oclIsTypeOf(UML!Property))->collect(p |
thisModule.Property2Variables(p)),
-- default variables for a process
variables <- Sequence {
thisModule.newVariable (thisModule.var_obs_by,'pid',true),
thisModule.newVariable (thisModule.var_obs_vars,'pid',false),
thisModule.newVariable (thisModule.var_obs_tmp,'pid',false)
},
--variables <- thisModule.getVarsFromAssociations(c)->collect(o |
thisModule.Property2Variables(o)),
ancestor <- #class,
------------------------------------------------------------ ---
--states <- thisModule.newFinalState,
states <- defaultState,
baseName <- c.owner.getqualifiedNameIF
),
defaultState : _IF!State (
id <- thisModule.state_default_top,
options <- #start,
transition <- c.ownedOperation
->select(o | not o.isStereotyped(thisModule.ster_trigger_operation) and
not o.isConstructor)
->collect(o | thisModule.Operation2Transition(o)),
subState <- c.ownedMember->select(e |
e.isStereotyped(thisModule.ster_state_machine))
)
do {
thisModule.manageAssociations(c,s) ;
}
}

============================================================ ===========

the error is :

ATL Console initiated
Dumping ASM to D:/workspace/uml2ifATL/umlFW2if.asm
Warning: one refSetting crashed:
java.lang.NullPointerException
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76)
at
org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49)
at org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78)
at
org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71)
at org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105)
at
org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85)
at
org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:67)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:103)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:87)
at
org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35)
at
org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197)
at
org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249)
at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302)
at
org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334)
at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137)
at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Warning: one refSetting crashed:
java.lang.NullPointerException
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76)
at
org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49)
at org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78)
at
org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71)
at org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105)
at
org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85)
at
org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:67)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:103)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:87)
at
org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35)
at
org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197)
at
org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249)
at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302)
at
org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334)
at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137)
at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Warning: one refSetting crashed:
java.lang.NullPointerException
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76)
at
org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49)
at org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78)
at
org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71)
at org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105)
at
org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85)
at
org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:67)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:103)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:87)
at
org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35)
at
org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197)
at
org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249)
at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302)
at
org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334)
at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137)
at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Warning: one refSetting crashed:
java.lang.NullPointerException
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76)
at
org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49)
at org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78)
at
org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71)
at org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105)
at
org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81)
at
org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85)
at
org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:67)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:103)
at org.eclipse.core.internal.resources.Resource.accept(Resource .java:87)
at
org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53)
at org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35)
at
org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197)
at
org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249)
at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302)
at
org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334)
at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137)
at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Warning: one refSetting crashed:
java.lang.NullPointerException
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599)
at
org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150)
at
org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76)
at
org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53)
at
org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107)
at
org.eclipse.m2m.atl.engin
Re: [ATL]Bug report : crash when compilation error [message #52393 is a reply to message #52366] Fri, 13 July 2007 08:15 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: tristan.faure.c-s.fr

sorry this is my environment

topcased 1.0.0.v200706291647
eclipse Version: 3.3.0
ATL 2.0.0
Re: [ATL]Bug report : crash when compilation error [message #53052 is a reply to message #52393] Wed, 18 July 2007 13:40 Go to previous message
Frédéric Jouault is currently offline Frédéric JouaultFriend
Messages: 572
Registered: July 2009
Senior Member
Hello,

Can you please report this issue on bugzilla ?

Thanks,

Frédéric Jouault


Tristan FAURE wrote:
> sorry this is my environment
>
> topcased 1.0.0.v200706291647
> eclipse Version: 3.3.0
> ATL 2.0.0
>
Previous Topic:[ATL] Three questions about 'lazy rules'
Next Topic:[ATL] Charging models dynamically in an ATL transformation
Goto Forum:
  


Current Time: Thu Jan 21 14:27:13 GMT 2021

Powered by FUDForum. Page generated in 0.01789 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top