Skip to content

Commit

Permalink
Handle the SubcomponentElement.subcomponent reference in the serializer
Browse files Browse the repository at this point in the history
scope provider. Also add error types to the scope of the
EMV2PathElement.namedElement reference. Fixes #114.
  • Loading branch information
joeseibel committed Oct 19, 2016
1 parent 697641c commit 79953cd
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.eclipse.xtext.serializer.ISerializer
import org.osate.aadl2.AnnexLibrary
import org.osate.aadl2.AnnexSubclause
import org.osate.annexsupport.AnnexUnparser
import org.osate.xtext.aadl2.errormodel.errorModel.ErrorModelSubclause

class EMV2AnnexUnparser implements AnnexUnparser {
@Inject
Expand All @@ -17,6 +18,7 @@ class EMV2AnnexUnparser implements AnnexUnparser {

override unparseAnnexSubclause(AnnexSubclause subclause, String indent) {
// We are only called if it is the actual parsed annex, not the DefaultAnnexLibrary
(subclause as ErrorModelSubclause).name = "unnamed_subclause"
serializer.serialize(subclause)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,8 @@ class ErrorModelScopeProvider extends PropertiesScopeProvider {
* Scope for elements of EMV2Path in transition conditions in state machine declarations
*/
def scope_EMV2PathElement_namedElement(ErrorBehaviorStateMachine context, EReference reference) {
context.events.scopeFor
val typesScope = scopeForErrorTypes(context.useTypes, Optional.empty, [allErrorTypes])
context.events.scopeFor(typesScope)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ package org.osate.xtext.aadl2.errormodel.scoping

import org.eclipse.emf.ecore.EReference
import org.osate.aadl2.Classifier
import org.osate.aadl2.ComponentImplementation
import org.osate.aadl2.Element
import org.osate.xtext.aadl2.errormodel.errorModel.EMV2PathElement
import org.osate.xtext.aadl2.errormodel.errorModel.EMV2PropertyAssociation
import org.osate.xtext.aadl2.errormodel.errorModel.FeatureorPPReference
import org.osate.xtext.aadl2.errormodel.errorModel.QualifiedErrorBehaviorState

import static extension org.eclipse.xtext.EcoreUtil2.getContainerOfType

Expand All @@ -29,4 +31,16 @@ class ErrorModelSerializerScopeProvider extends ErrorModelScopeProvider {
scope_EMV2PathElement_namedElement(parent.getContainerOfType(EMV2PropertyAssociation), reference)
}
}

override scope_SubcomponentElement_subcomponent(QualifiedErrorBehaviorState context, EReference reference) {
val parent = context.eContainer
if (parent instanceof QualifiedErrorBehaviorState) {
super.scope_SubcomponentElement_subcomponent(parent, reference)
} else {
val containingImplementation = parent.getContainerOfType(ComponentImplementation)
if (containingImplementation != null) {
scope_SubcomponentElement_subcomponent(containingImplementation, reference)
}
}
}
}

0 comments on commit 79953cd

Please sign in to comment.