Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions cdlang/src/main/java/de/monticore/cdgen/CDGenTool.java
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ else if (!cmd.hasOption("i") || cmd.hasOption("h")) {

final boolean c2mc = cmd.hasOption("c2mc");

initializeSymbolTable(c2mc);
initializeSymbolTable(c2mc, cmd.hasOption("class2mc-no-jdk"));

Log.enableFailQuick(false);
Collection<ASTCDCompilationUnit> asts = this.parse(".cd", this.createModelPath(cmd)
Expand Down Expand Up @@ -212,24 +212,20 @@ else if (!cmd.hasOption("i") || cmd.hasOption("h")) {
CD4CodeMill.globalScope().clear();
}

public void initializeSymbolTable(boolean c2mc) {
public void initializeSymbolTable(boolean c2mc, boolean c2mcNoJdk) {
BasicSymbolsMill.initializePrimitives();
MCCollectionSymTypeRelations.init();

if (c2mc) {
initializeClass2MC();
CD4CodeMill.globalScope().addAdaptedTypeSymbolResolver(new OOClass2MCResolver(!c2mcNoJdk));
CD4CodeMill.globalScope().addAdaptedOOTypeSymbolResolver(new OOClass2MCResolver(!c2mcNoJdk));
}
else {
BasicSymbolsMill.initializeString();
BasicSymbolsMill.initializeObject();
}
}

public void initializeClass2MC() {
CD4CodeMill.globalScope().addAdaptedTypeSymbolResolver(new OOClass2MCResolver());
CD4CodeMill.globalScope().addAdaptedOOTypeSymbolResolver(new OOClass2MCResolver());
}

public void initializeDecConf(GlobalExtensionManagement glex, DecoratorConfig decConfig,
CommandLine cmd, GeneratorSetup setup) {
// Setup CLI config overrides
Expand Down Expand Up @@ -395,6 +391,10 @@ public Options addAdditionalOptions(Options options) {
options.addOption(Option.builder("c2mc").longOpt("class2mc").desc(
"Enables to resolve java classes in the model path").build());

options.addOption(Option.builder().longOpt("class2mc-no-jdk").desc(
"Does not resolve types from the installed JDK's standard library. Only the symbolpath is used.")
.build());

options.addOption(Option.builder("cliconfig").desc("Configures additional").hasArgs().argName(
"fqn:key[=value]").build());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public TestResult doTest(ASTCDCompilationUnit cd) {
tool.trafoBeforeSymtab(Collections.singletonList(cd));

final boolean class2mc = this.withClass2MC();
tool.initializeSymbolTable(class2mc);
tool.initializeSymbolTable(class2mc, !class2mc);

// Create ST
tool.createSymbolTable(cd);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ public CDGenTask() {
@Input
abstract Property<Boolean> getClass2MC();

@Optional
@Input
abstract Property<Boolean> getClass2MCNoJdk();

/**
* Whether CoCos should be checked, default is true
*
Expand Down Expand Up @@ -82,6 +86,9 @@ protected List<String> createArgList(Function<Path, String> handlePath) {
if (getClass2MC().isPresent() && getClass2MC().get()) {
list.add("--class2mc");
}
if (getClass2MCNoJdk().isPresent() && getClass2MCNoJdk().get()) {
list.add("--class2mc-no-jdk");
}
if (!getTargetSymbolPath().isEmpty()) { // model paths
List<Path> modelPath = new ArrayList<>();
getTargetSymbolPath().forEach(it -> modelPath.add(it.toPath()));
Expand Down
Loading