Skip to content

Commit

Permalink
Use the Alloy compiler in the relational PCT Tests (finos#3044)
Browse files Browse the repository at this point in the history
  • Loading branch information
pierredebelen authored Aug 28, 2024
1 parent 7e33361 commit 83d2dcc
Show file tree
Hide file tree
Showing 62 changed files with 1,295 additions and 743 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ public void testExtendWithOver()
Assert.assertEquals("[count , count(], [joinStrings , joinStrings(]", checkResultNoException(new Completer("###Relational\nDatabase a::A(Table t(col VARCHAR(200), val INT))", Lists.mutable.with(new RelationalCompleterExtension())).complete("#>{a::A.t}#->extend(over(~col->ascending()), ~nc:{p,f,r|$r.col}:y|$y->")));
}

@Test
public void testExtendWithOverError()
{
Assert.assertEquals("COMPILATION error at [6:55-56]: Can't find variable class for variable 'p' in the graph", new Completer("###Relational\nDatabase a::A(Table t(col VARCHAR(200), val INT))", Lists.mutable.with(new RelationalCompleterExtension())).complete("#>{a::A.t}#->extend(over(~Name->descending()), {p,f,r|$p->lead($r).").getEngineException().toPretty());
}

//---------
// GroupBy
//---------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ public static org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Enumeratio
._name(id)
._parent(pureMapping)
._enumeration(context.resolveEnumeration(em.enumeration.path, em.enumeration.sourceInformation))
._enumValueMappings(ListIterate.collect(em.enumValueMappings, v -> new Root_meta_pure_mapping_EnumValueMapping_Impl(null, SourceInformationHelper.toM3SourceInformation(v.sourceInformation), null)
._enumValueMappings(ListIterate.collect(em.enumValueMappings, v -> new Root_meta_pure_mapping_EnumValueMapping_Impl(null, SourceInformationHelper.toM3SourceInformation(v.sourceInformation), context.pureModel.getClass("meta::pure::mapping::EnumValueMapping"))
._enum(context.resolveEnumValue(em.enumeration.path, v.enumValue))
._sourceValues(convertSourceValues(em, v.sourceValues, context))
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@
import org.finos.legend.pure.generated.Root_meta_pure_runtime_PackageableRuntime_Impl;
import org.finos.legend.pure.generated.Root_meta_core_runtime_Runtime;
import org.finos.legend.pure.generated.Root_meta_core_runtime_Runtime_Impl;
import org.finos.legend.pure.m3.coreinstance.Package;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Stereotype;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Tag;
Expand All @@ -70,7 +69,6 @@
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpression;

import java.util.List;
import java.util.Objects;

public class PackageableElementFirstPassBuilder implements PackageableElementVisitor<org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement>
{
Expand Down Expand Up @@ -212,7 +210,7 @@ public PackageableElement visit(Function function)
@Override
public PackageableElement visit(Mapping mapping)
{
org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Mapping pureMapping = new Root_meta_pure_mapping_Mapping_Impl(mapping.name, SourceInformationHelper.toM3SourceInformation(mapping.sourceInformation), null);
org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Mapping pureMapping = new Root_meta_pure_mapping_Mapping_Impl(mapping.name, SourceInformationHelper.toM3SourceInformation(mapping.sourceInformation), this.context.pureModel.getClass("meta::pure::mapping::Mapping"));
this.context.pureModel.mappingsIndex.put(this.context.pureModel.buildPackageString(mapping._package, mapping.name), pureMapping);
GenericType mappingGenericType = newGenericType(this.context.pureModel.getType("meta::pure::mapping::Mapping"));
pureMapping._classifierGenericType(mappingGenericType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@
import org.finos.legend.pure.generated.Root_meta_pure_runtime_PackageableRuntime;
import org.finos.legend.pure.m3.coreinstance.Package;
import org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Mapping;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.ConcreteFunctionDefinition;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.NativeFunction;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.Multiplicity;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.PackageableMultiplicity;
import org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Enumeration;
Expand Down Expand Up @@ -665,6 +667,11 @@ public org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElem
{
return packageableElement;
}
packageableElement = getGraphFunctions(fullPath);
if (packageableElement != null)
{
return packageableElement;
}
packageableElement = getAssociation_safe(fullPath);
if (packageableElement != null)
{
Expand Down Expand Up @@ -927,6 +934,26 @@ public org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.As
return association;
}

public org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.PackageableFunction<?> getGraphFunctions(String fullPath)
{
try
{
return (ConcreteFunctionDefinition<?>) this.executionSupport.getMetadata("meta::pure::metamodel::function::ConcreteFunctionDefinition", "Root::" + fullPath);
}
catch (Exception e)
{
try
{
return (NativeFunction<?>) this.executionSupport.getMetadata("meta::pure::metamodel::function::NativeFunction", "Root::" + fullPath);
}
catch (Exception ee)
{
// do nothing
}
}
return null;
}

public org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.Association getAssociation_safe(String fullPath)
{
String fullPathWithPrefix = addPrefixToTypeReference(fullPath);
Expand Down Expand Up @@ -1268,7 +1295,7 @@ public Multiplicity getMultiplicity(org.finos.legend.engine.protocol.pure.v1.mod

public static GenericType buildFunctionType(MutableList<VariableExpression> parameters, GenericType returnType, Multiplicity returnMultiplicity, PureModel pureModel)
{
return new Root_meta_pure_metamodel_type_generics_GenericType_Impl("", null, pureModel.getClass("meta::pure::metamodel::type::generics::GenericType"))._rawType(new Root_meta_pure_metamodel_type_FunctionType_Impl("", null, pureModel.getClass("meta::pure::metamodel::type::FunctionType"))._parameters(parameters)._returnType(returnType)._returnMultiplicity(returnMultiplicity));
return new Root_meta_pure_metamodel_type_generics_GenericType_Impl("", null, pureModel.getClass(M3Paths.GenericType))._rawType(new Root_meta_pure_metamodel_type_FunctionType_Impl("", null, pureModel.getClass(M3Paths.FunctionType))._parameters(parameters)._returnType(returnType)._returnMultiplicity(returnMultiplicity));
}

public String buildPackageString(String pack, String name)
Expand Down
Loading

0 comments on commit 83d2dcc

Please sign in to comment.