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
3 changes: 3 additions & 0 deletions language/src/main/grammars/de/monticore/lang/SysMLv2.mc4
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ grammar SysMLv2 extends SysMLExpressions,
SysMLQualifiedName extends MCQualifiedName =
Name (("::" | ".") Name)* ;

SysMLBasicGenericType extends MCBasicGenericType =
Name (("." | "::") Name)* "<" (MCTypeArgument || ",")* ">";

astrule SysMLQualifiedName =
method public List<String> getPartsList() {
return getNameList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static void prepareGlobalScope() {
SysMLv2Tool.loadStreamSymbolsFromJar();
}

protected static void loadScalarValuesFromSym() {
public static void loadScalarValuesFromSym() {
getMill()._loadScalarValuesFromSym();
}

Expand Down Expand Up @@ -133,7 +133,7 @@ public static void addKermlCollectionsTypes() {
getMill()._addCollectionsPackage();
}

protected static void loadCollectionValuesFromSym() {
public static void loadCollectionValuesFromSym() {
getMill()._loadCollectionFromSym();
}

Expand Down
19 changes: 19 additions & 0 deletions language/src/test/java/symboltable/StandardLibraryImportTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import de.monticore.lang.sysmlv2.SysMLv2Tool;
import de.monticore.lang.sysmlv2._symboltable.ISysMLv2Scope;
import de.monticore.symbols.basicsymbols._symboltable.TypeSymbol;
import de.monticore.types3.TypeCheck3;
import de.se_rwth.commons.logging.Log;
import de.se_rwth.commons.logging.LogStub;
import org.junit.jupiter.api.BeforeAll;
Expand All @@ -18,6 +19,7 @@
import java.io.IOException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

public class StandardLibraryImportTest {
public static SysMLv2Tool tool;
Expand Down Expand Up @@ -145,6 +147,23 @@ public void testCollectionsListResolving(String model) throws IOException {
assertThat(Log.getFindings()).isEmpty();
}

@Test
public void testCollectionsListGenericTypeFromSymFile() throws IOException {
LogStub.init();
var tool = new SysMLv2Tool();
tool.init();
// We clear the globalScope to load the KerMLSym
tool.getGlobalScope().clear();

SysMLv2Mill.loadScalarValuesFromSym();
SysMLv2Mill.loadCollectionValuesFromSym();
assertThat(Log.getFindings()).isEmpty();

var ast = SysMLv2Mill.parser()
.parse_StringMCType("Collections::List<ScalarValues::Boolean>").get();
assertThrows(NullPointerException.class, () -> TypeCheck3.symTypeFromAST(ast));
}

@Test
public void testStatesImport() throws IOException {
var model = " private import States::*;"+
Expand Down
Loading