use of org.wso2.ballerinalang.compiler.tree.BLangEnum in project ballerina by ballerina-lang.
the class SemanticAnalyzer method visit.
@Override
public void visit(BLangEnum enumNode) {
BSymbol enumSymbol = enumNode.symbol;
SymbolEnv enumEnv = SymbolEnv.createPkgLevelSymbolEnv(enumNode, enumSymbol.scope, env);
enumNode.annAttachments.forEach(annotationAttachment -> {
annotationAttachment.attachmentPoint = new BLangAnnotationAttachmentPoint(BLangAnnotationAttachmentPoint.AttachmentPoint.ENUM);
annotationAttachment.accept(this);
});
enumNode.docAttachments.forEach(doc -> analyzeDef(doc, enumEnv));
}
use of org.wso2.ballerinalang.compiler.tree.BLangEnum in project ballerina by ballerina-lang.
the class BLangPackageBuilder method endEnumDef.
public void endEnumDef(String identifier, boolean publicEnum) {
BLangEnum enumNode = (BLangEnum) this.enumStack.pop();
enumNode.name = (BLangIdentifier) this.createIdentifier(identifier);
if (publicEnum) {
enumNode.flagSet.add(Flag.PUBLIC);
}
enumeratorList.forEach(enumNode::addEnumerator);
this.compUnit.addTopLevelNode(enumNode);
enumeratorList = new ArrayList<>();
}
use of org.wso2.ballerinalang.compiler.tree.BLangEnum in project ballerina by ballerina-lang.
the class HoverUtil method getHoverInformation.
/**
* Get the hover information for the given hover context.
*
* @param bLangPackage resolved bLangPackage for the hover context.
* @param hoverContext context of the hover.
* @return hover content.
*/
public static Hover getHoverInformation(BLangPackage bLangPackage, TextDocumentServiceContext hoverContext) {
Hover hover;
switch(hoverContext.get(NodeContextKeys.SYMBOL_KIND_OF_NODE_PARENT_KEY)) {
case ContextConstants.FUNCTION:
BLangFunction bLangFunction = bLangPackage.functions.stream().filter(function -> function.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangFunction != null) {
if (bLangFunction.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangFunction.docAttachments);
} else {
hover = getAnnotationContent(bLangFunction.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.STRUCT:
BLangStruct bLangStruct = bLangPackage.structs.stream().filter(struct -> struct.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangStruct != null) {
if (bLangStruct.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangStruct.docAttachments);
} else {
hover = getAnnotationContent(bLangStruct.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.OBJECT:
BLangObject bLangObject = bLangPackage.objects.stream().filter(object -> object.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangObject != null) {
if (bLangObject.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangObject.docAttachments);
} else {
hover = getAnnotationContent(bLangObject.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.ENUM:
BLangEnum bLangEnum = bLangPackage.enums.stream().filter(bEnum -> bEnum.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangEnum != null) {
if (bLangEnum.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangEnum.docAttachments);
} else {
hover = getAnnotationContent(bLangEnum.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.TRANSFORMER:
BLangTransformer bLangTransformer = bLangPackage.transformers.stream().filter(bTransformer -> bTransformer.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangTransformer != null) {
if (bLangTransformer.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangTransformer.docAttachments);
} else {
hover = getAnnotationContent(bLangTransformer.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.CONNECTOR:
BLangConnector bLangConnector = bLangPackage.connectors.stream().filter(bConnector -> bConnector.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangConnector != null) {
if (bLangConnector.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangConnector.docAttachments);
} else {
hover = getAnnotationContent(bLangConnector.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.ACTION:
BLangAction bLangAction = bLangPackage.connectors.stream().filter(bConnector -> bConnector.name.getValue().equals(((BLangInvocation) hoverContext.get(NodeContextKeys.PREVIOUSLY_VISITED_NODE_KEY)).symbol.owner.name.getValue())).flatMap(connector -> connector.actions.stream()).filter(bAction -> bAction.name.getValue().equals(hoverContext.get(NodeContextKeys.NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangAction != null) {
if (bLangAction.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangAction.docAttachments);
} else {
hover = getAnnotationContent(bLangAction.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.ENDPOINT:
BLangEndpoint bLangEndpoint = bLangPackage.globalEndpoints.stream().filter(globalEndpoint -> globalEndpoint.name.value.equals(hoverContext.get(NodeContextKeys.VAR_NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangEndpoint != null) {
hover = getAnnotationContent(bLangEndpoint.annAttachments);
} else {
hover = getDefaultHoverObject();
}
break;
case ContextConstants.VARIABLE:
BLangVariable bLangVariable = bLangPackage.globalVars.stream().filter(globalVar -> globalVar.name.getValue().equals(hoverContext.get(NodeContextKeys.VAR_NAME_OF_NODE_KEY))).findAny().orElse(null);
if (bLangVariable != null) {
if (bLangVariable.docAttachments.size() > 0) {
hover = getDocumentationContent(bLangVariable.docAttachments);
} else {
hover = getAnnotationContent(bLangVariable.annAttachments);
}
} else {
hover = getDefaultHoverObject();
}
break;
default:
hover = new Hover();
List<Either<String, MarkedString>> contents = new ArrayList<>();
contents.add(Either.forLeft(""));
hover.setContents(contents);
break;
}
return hover;
}
use of org.wso2.ballerinalang.compiler.tree.BLangEnum in project ballerina by ballerina-lang.
the class BallerinaEnumDocGenTest method testStruct.
@Test(description = "Test a Bal file with Enum")
public void testStruct() {
try {
Map<String, BLangPackage> docsMap = BallerinaDocGenerator.generatePackageDocsFromBallerina(sourceRoot, "enumTest.bal");
Assert.assertNotNull(docsMap);
Assert.assertEquals(docsMap.size(), 1);
BLangPackage balPackage = docsMap.get(".");
List<? extends EnumNode> enums = balPackage.getEnums();
Assert.assertEquals(enums.size(), 1);
BLangEnum struct = (BLangEnum) enums.iterator().next();
Assert.assertEquals(struct.getEnumerators().size(), 13);
} catch (IOException e) {
Assert.fail();
} finally {
BallerinaDocGenTestUtils.cleanUp();
}
}
use of org.wso2.ballerinalang.compiler.tree.BLangEnum in project ballerina by ballerina-lang.
the class DocumentationTest method testDocEnum.
@Test(description = "Test doc annotation enum.")
public void testDocEnum() {
CompileResult compileResult = BCompileUtil.compile("test-src/documentation/enum.bal");
Assert.assertEquals(0, compileResult.getWarnCount());
PackageNode packageNode = compileResult.getAST();
List<BLangDocumentation> docNodes = ((BLangEnum) packageNode.getEnums().get(0)).docAttachments;
BLangDocumentation dNode = docNodes.get(0);
Assert.assertNotNull(dNode);
Assert.assertEquals(dNode.documentationText, " Documentation for state enum\n");
Assert.assertEquals(dNode.getAttributes().size(), 2);
Assert.assertEquals(dNode.getAttributes().get(0).documentationField.getValue(), "foo");
Assert.assertEquals(dNode.getAttributes().get(0).documentationText, " enum `field foo` documentation\n");
Assert.assertEquals(dNode.getAttributes().get(1).documentationField.getValue(), "bar");
Assert.assertEquals(dNode.getAttributes().get(1).documentationText, " enum `field bar` documentation");
}
Aggregations