use of org.wso2.ballerinalang.compiler.tree.BLangImportPackage in project ballerina by ballerina-lang.
the class SymbolEnter method visit.
@Override
public void visit(BLangImportPackage importPkgNode) {
Name pkgAlias = names.fromIdNode(importPkgNode.alias);
if (symResolver.lookupSymbol(env, pkgAlias, SymTag.IMPORT) != symTable.notFoundSymbol) {
dlog.error(importPkgNode.pos, DiagnosticCode.REDECLARED_SYMBOL, pkgAlias);
return;
}
// TODO Clean this code up. Can we move the this to BLangPackageBuilder class
// Create import package symbol
Name orgName;
if (importPkgNode.orgName.value == null || importPkgNode.orgName.value.isEmpty()) {
// means it's in 'import <pkg-name>' style
orgName = Names.ANON_ORG;
} else {
// means it's in 'import <org-name>/<pkg-name>' style
orgName = names.fromIdNode(importPkgNode.orgName);
}
List<Name> nameComps = importPkgNode.pkgNameComps.stream().map(identifier -> names.fromIdNode(identifier)).collect(Collectors.toList());
String version = names.fromIdNode(importPkgNode.version).getValue().replaceAll("[^\\d.]", "");
PackageID pkgId = new PackageID(orgName, nameComps, new Name(version));
if (pkgId.name.getValue().startsWith(Names.BUILTIN_PACKAGE.value)) {
dlog.error(importPkgNode.pos, DiagnosticCode.PACKAGE_NOT_FOUND, importPkgNode.getQualifiedPackageName());
return;
}
// Attempt to load the imported package.
BLangPackage pkgNode = pkgLoader.loadPackage(pkgId, env.enclPkg.packageRepository);
if (pkgNode == null) {
dlog.error(importPkgNode.pos, DiagnosticCode.PACKAGE_NOT_FOUND, importPkgNode.getQualifiedPackageName());
return;
}
// This import package is not defined.
if (pkgNode.symbol == null) {
// Define import package now.
definePackage(pkgNode);
populateInitFunctionInvocation(importPkgNode, pkgNode.symbol);
}
// define the import package symbol in the current package scope
importPkgNode.symbol = pkgNode.symbol;
this.env.scope.define(pkgAlias, pkgNode.symbol);
}
use of org.wso2.ballerinalang.compiler.tree.BLangImportPackage in project ballerina by ballerina-lang.
the class CodeAnalyzer method visit.
public void visit(BLangImportPackage importPkgNode) {
BPackageSymbol pkgSymbol = importPkgNode.symbol;
SymbolEnv pkgEnv = this.symTable.pkgEnvMap.get(pkgSymbol);
if (pkgEnv == null) {
return;
}
pkgEnv.node.accept(this);
}
use of org.wso2.ballerinalang.compiler.tree.BLangImportPackage in project ballerina by ballerina-lang.
the class CompilerPluginRunner method visit.
public void visit(BLangImportPackage importPkgNode) {
BPackageSymbol pkgSymbol = importPkgNode.symbol;
SymbolEnv pkgEnv = symTable.pkgEnvMap.get(pkgSymbol);
if (pkgEnv == null) {
return;
}
pkgEnv.node.accept(this);
}
use of org.wso2.ballerinalang.compiler.tree.BLangImportPackage in project ballerina by ballerina-lang.
the class CodeGenerator method visit.
public void visit(BLangImportPackage importPkgNode) {
BPackageSymbol pkgSymbol = importPkgNode.symbol;
genPackage(pkgSymbol);
}
use of org.wso2.ballerinalang.compiler.tree.BLangImportPackage in project ballerina by ballerina-lang.
the class Desugar method visit.
@Override
public void visit(BLangImportPackage importPkgNode) {
BPackageSymbol pkgSymbol = importPkgNode.symbol;
SymbolEnv pkgEnv = this.symTable.pkgEnvMap.get(pkgSymbol);
rewrite(pkgEnv.node, pkgEnv);
result = importPkgNode;
}
Aggregations