/** Check if the supertype of the given behavior is a subtype of Behavior. * * @param behavior the type to test. */ @Check(CheckType.FAST) public void checkSuperType(SarlBehavior behavior) { checkSuperTypes( behavior, SARL_BEHAVIOR__EXTENDS, Utils.singletonList(behavior.getExtends()), Behavior.class, false); }
/** Generate the given object. * * @param behavior the behavior. * @param context the context. */ protected void _generate(SarlBehavior behavior, IExtraLanguageGeneratorContext context) { final JvmDeclaredType jvmType = getJvmModelAssociations().getInferredType(behavior); final PyAppendable appendable = createAppendable(jvmType, context); final List<JvmTypeReference> superTypes; if (behavior.getExtends() != null) { superTypes = Collections.singletonList(behavior.getExtends()); } else { superTypes = Collections.singletonList(getTypeReferences().getTypeForName(Behavior.class, behavior)); } final String qualifiedName = this.qualifiedNameProvider.getFullyQualifiedName(behavior).toString(); if (generateTypeDeclaration( qualifiedName, behavior.getName(), behavior.isAbstract(), superTypes, getTypeBuilder().getDocumentation(behavior), true, behavior.getMembers(), appendable, context, (it, context2) -> { generateGuardEvaluators(qualifiedName, it, context2); })) { final QualifiedName name = getQualifiedNameProvider().getFullyQualifiedName(behavior); writeFile(name, appendable, context); } }
/** Format the given SARL behavior. * * @param behavior the SARL component. * @param document the document. */ protected void _format(SarlBehavior behavior, IFormattableDocument document) { formatAnnotations(behavior, document, XbaseFormatterPreferenceKeys.newLineAfterClassAnnotations); formatModifiers(behavior, document); final ISemanticRegionsFinder regionFor = this.textRegionExtensions.regionFor(behavior); document.append(regionFor.keyword(this.keywords.getBehaviorKeyword()), ONE_SPACE); document.surround(regionFor.keyword(this.keywords.getExtendsKeyword()), ONE_SPACE); document.format(behavior.getExtends()); formatBody(behavior, document); }
@Override protected void generateTypeContent(ISourceAppender appender, IJvmTypeProvider typeProvider, String comment, IProgressMonitor monitor) throws Exception { final SubMonitor mon = SubMonitor.convert(monitor, 4); final ScriptSourceAppender scriptBuilder = this.codeBuilderFactory.buildScript( getPackageFragment().getElementName(), typeProvider); final ISarlBehaviorBuilder behavior = scriptBuilder.addSarlBehavior(getTypeName()); behavior.setExtends(getSuperClass()); behavior.setDocumentation(comment); mon.worked(1); createStandardSARLEventTemplates(Messages.NewSarlBehaviorWizardPage_4, name -> behavior.addSarlBehaviorUnit(name), name -> behavior.addSarlCapacityUses(name)); mon.worked(2); if (behavior.getSarlBehavior().getExtends() != null) { createInheritedMembers( Behavior.class.getCanonicalName(), behavior.getSarlBehavior(), true, () -> behavior.addSarlConstructor(), name -> behavior.addOverrideSarlAction(name), getSuperClass()); } mon.worked(3); scriptBuilder.build(appender); mon.done(); }
appendConstrainedExtends(context, inferredJvmType, Behavior.class, SarlBehavior.class, source.getExtends());