use of org.wso2.ballerinalang.programfile.CompiledBinaryFile.ProgramFile in project ballerina by ballerina-lang.
the class LauncherUtils method compile.
/**
* Compile and get the executable program file.
*
* @param sourceRootPath Path to the source root
* @param sourcePath Path to the source from the source root
* @param offline Should the build call remote repos
* @return Executable program
*/
public static ProgramFile compile(Path sourceRootPath, Path sourcePath, boolean offline) {
CompilerContext context = new CompilerContext();
CompilerOptions options = CompilerOptions.getInstance(context);
options.put(PROJECT_DIR, sourceRootPath.toString());
options.put(COMPILER_PHASE, CompilerPhase.CODE_GEN.toString());
options.put(PRESERVE_WHITESPACE, "false");
options.put(OFFLINE, Boolean.toString(offline));
// compile
Compiler compiler = Compiler.getInstance(context);
BLangPackage entryPkgNode = compiler.compile(sourcePath.toString());
CompiledBinaryFile.ProgramFile programFile = compiler.getExecutableProgram(entryPkgNode);
if (programFile == null) {
throw createLauncherException("compilation contains errors");
}
ProgramFile progFile = getExecutableProgram(programFile);
progFile.setProgramFilePath(sourcePath);
return progFile;
}
use of org.wso2.ballerinalang.programfile.CompiledBinaryFile.ProgramFile in project ballerina by ballerina-lang.
the class BCompileUtil method compile.
public static CompileResult compile(String sourceRoot, String packageName, CompilerPhase compilerPhase, SourceDirectory sourceDirectory) {
CompilerContext context = new CompilerContext();
CompilerOptions options = CompilerOptions.getInstance(context);
options.put(PROJECT_DIR, sourceRoot);
options.put(COMPILER_PHASE, compilerPhase.toString());
options.put(PRESERVE_WHITESPACE, "false");
context.put(SourceDirectory.class, sourceDirectory);
CompileResult comResult = new CompileResult();
// catch errors
DiagnosticListener listener = comResult::addDiagnostic;
context.put(DiagnosticListener.class, listener);
// compile
Compiler compiler = Compiler.getInstance(context);
BLangPackage packageNode = compiler.compile(packageName);
comResult.setAST(packageNode);
CompiledBinaryFile.ProgramFile programFile = compiler.getExecutableProgram(packageNode);
if (programFile != null) {
comResult.setProgFile(LauncherUtils.getExecutableProgram(programFile));
}
return comResult;
}
use of org.wso2.ballerinalang.programfile.CompiledBinaryFile.ProgramFile in project ballerina by ballerina-lang.
the class ProgramFile method addAttributeInfo.
@Override
public void addAttributeInfo(AttributeInfo.Kind attributeKind, AttributeInfo attributeInfo) {
attributeInfoMap.put(attributeKind, attributeInfo);
if (attributeKind == AttributeInfo.Kind.VARIABLE_TYPE_COUNT_ATTRIBUTE) {
// TODO Move this out of the program file to a program context.. Runtime representation of a program.
// TODO ProgramFile is the static program data.
VarTypeCountAttributeInfo varTypeCountAttribInfo = (VarTypeCountAttributeInfo) attributeInfo;
int[] globalVarCount = varTypeCountAttribInfo.getVarTypeCount();
// // Initialize global memory block
// BStructType dummyType = new BStructType("", "");
// dummyType.setFieldTypeCount(globalVarCount);
// this.globalMemoryBlock = new BStruct(dummyType);
}
}
Aggregations