|
From: <ma...@us...> - 2010-08-20 13:49:33
|
Revision: 846
http://scstudio.svn.sourceforge.net/scstudio/?rev=846&view=rev
Author: madzin
Date: 2010-08-20 13:49:27 +0000 (Fri, 20 Aug 2010)
Log Message:
-----------
repair bug ID: 3003860
Modified Paths:
--------------
trunk/src/data/Z120/Context.cpp
trunk/tests/z120_test/CMakeLists.txt
Added Paths:
-----------
trunk/tests/z120_test/z120_test88.mpr
trunk/tests/z120_test/z120_test88.mpr.result
Modified: trunk/src/data/Z120/Context.cpp
===================================================================
--- trunk/src/data/Z120/Context.cpp 2010-08-13 22:23:37 UTC (rev 845)
+++ trunk/src/data/Z120/Context.cpp 2010-08-20 13:49:27 UTC (rev 846)
@@ -816,43 +816,49 @@
std::set<std::string>::iterator it;
std::map<std::string, EventPtr>::iterator named_event_it;
CoregionEventPtr event = boost::dynamic_pointer_cast<CoregionEvent>(context->current_event);
+
if(event == NULL){
- context->z->print_report(RS_WARNING, stringize() << L"Warning 13: Event of " << context->current_event->get_message()->get_label() << " message is not in coregion");
-
+ std::wstring warning = L"Warning 13: Event of " + context->current_event->get_message()->get_label();
+ warning = warning + L" message is not in coregion";
+ context->z->print_report(RS_WARNING, stringize() << warning);
return;
}
- for(it = context->order_events.begin(); it != context->order_events.end(); ++it){
- if((named_event_it = context->named_events.find(*it)) != context->named_events.end()){
-
- CoregionEventPtr event1 = boost::dynamic_pointer_cast<CoregionEvent>(named_event_it->second);
-
- if(event1 != NULL)
+
+ for(it = context->order_events.begin(); it != context->order_events.end(); ++it)
+ {
+ CoregionEventPtr event1;
+
+ if((named_event_it = context->named_events.find(*it)) != context->named_events.end())
+ {
+ event1 = boost::dynamic_pointer_cast<CoregionEvent>(named_event_it->second);
+ }
+ else
+ {
+ std::map<std::string, EventPtr>::iterator future_it = context->future_events.find(*it);
+
+ if(future_it != context->future_events.end())
{
- if(kind == before)
- {
- event->add_successor(event1.get());
- }
- else
- {
- event1->add_successor(event.get());
- }
+ event1 = boost::dynamic_pointer_cast<CoregionEvent>(future_it->second);
}
- }
- else{
- InstancePtr instance = context->instances.find(context->element_name)->second;
+ else
+ {
+ InstancePtr instance = context->instances.find(context->element_name)->second;
+ EventPtr e = instance->get_last()->add_event();
+ event1 = boost::dynamic_pointer_cast<CoregionEvent>(e);
- EventPtr event1 = instance->get_last()->add_event();
- CoregionEventPtr event2 = boost::dynamic_pointer_cast<CoregionEvent>(event1);
- context->future_events.insert(std::make_pair(*it, event2));
-
- if(kind == before){
- event->add_successor(event2.get());
+ context->future_events.insert(std::make_pair(*it, event1));
}
- else{
- event2->add_successor(event.get());
- }
}
+
+ if(event1 != NULL)
+ {
+ if(kind == before)
+ event->add_successor(event1.get());
+ else
+ event1->add_successor(event.get());
+ }
}
+
context->order_events.clear();
}
Modified: trunk/tests/z120_test/CMakeLists.txt
===================================================================
--- trunk/tests/z120_test/CMakeLists.txt 2010-08-13 22:23:37 UTC (rev 845)
+++ trunk/tests/z120_test/CMakeLists.txt 2010-08-20 13:49:27 UTC (rev 846)
@@ -95,6 +95,7 @@
ADD_Z120_TEST(z120_test85.mpr 1)
ADD_Z120_TEST(z120_test86.mpr 1)
ADD_Z120_TEST(z120_test87.mpr 1)
+ADD_Z120_TEST(z120_test88.mpr 1)
ADD_Z120_TEST(z120_time01.mpr 1)
ADD_Z120_TEST(z120_time02.mpr 1)
Added: trunk/tests/z120_test/z120_test88.mpr
===================================================================
--- trunk/tests/z120_test/z120_test88.mpr (rev 0)
+++ trunk/tests/z120_test/z120_test88.mpr 2010-08-20 13:49:27 UTC (rev 846)
@@ -0,0 +1,30 @@
+mscdocument Pada.vsd;
+msc Pada_export_import;
+inst A;
+inst I;
+inst S;
+inst H;
+A: instance;
+in SIP,0 from I;
+endinstance;
+I: instance;
+concurrent;
+out SIP,0 to A before e0, e1, e1;
+in Trying,1 from S before e2;
+label e0;
+out INV,2 to S before e1;
+label e1;
+in Resp,3 from H;
+label e2;
+out Query,4 to H;
+endconcurrent;
+endinstance;
+S: instance;
+in INV,2 from I;
+out Trying,1 to I;
+endinstance;
+H: instance;
+in Query,4 from I;
+out Resp,3 to I;
+endinstance;
+endmsc;
Added: trunk/tests/z120_test/z120_test88.mpr.result
===================================================================
--- trunk/tests/z120_test/z120_test88.mpr.result (rev 0)
+++ trunk/tests/z120_test/z120_test88.mpr.result 2010-08-20 13:49:27 UTC (rev 846)
@@ -0,0 +1,32 @@
+OK: z120_test88 is correct, should be correct
+
+mscdocument z120_test88;
+msc Pada_export_import;
+inst A;
+inst I;
+inst S;
+inst H;
+A: instance;
+in SIP,0 from I;
+endinstance;
+I: instance;
+concurrent;
+out SIP,0 to A before e0, e1;
+in Trying,1 from S before e2;
+label e0;
+out INV,2 to S before e1;
+label e1;
+in Resp,3 from H;
+label e2;
+out Query,4 to H;
+endconcurrent;
+endinstance;
+S: instance;
+in INV,2 from I;
+out Trying,1 to I;
+endinstance;
+H: instance;
+in Query,4 from I;
+out Resp,3 to I;
+endinstance;
+endmsc;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|