Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translate syntax 3 #803

Draft
wants to merge 140 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
695b71d
Implemented basic syntax and scoping
SimonCockx Mar 6, 2024
274673c
fixes
SimonCockx Mar 11, 2024
deab2c5
fixed highlighting
SimonCockx Apr 18, 2024
e51cd68
WIP
SimonCockx May 15, 2024
dc5eeec
Implemented syntax and scoping
SimonCockx May 21, 2024
9907d84
WIP
SimonCockx May 28, 2024
e334027
Merged
SimonCockx Jun 6, 2024
33fd848
WIP
SimonCockx Jun 7, 2024
18addbe
Fixed highlighting
SimonCockx Jun 7, 2024
3831c84
Implemented validation, formatting and highlighting
SimonCockx Jun 10, 2024
6448a71
Fixed
SimonCockx Jun 10, 2024
df999f9
Merged
SimonCockx Jun 10, 2024
2a2fab1
Merge branch 'main' into translate-syntax
SimonCockx Jun 14, 2024
dbc38a2
Added param to branch deploy
SimonCockx Jun 14, 2024
685f4be
Merge branch 'translate-syntax' of https://github.com/finos/rune-dsl …
SimonCockx Jun 14, 2024
8c543c5
Branch deploy fix
SimonCockx Jun 14, 2024
352ef40
add import as syntax with validation
davidalk Jul 2, 2024
4c35550
use correct xtext type for alias
davidalk Jul 2, 2024
e977086
add failing import alias test
davidalk Jul 3, 2024
265bfa7
added unit test
SimonCockx Jul 4, 2024
9e866d3
save
davidalk Jul 4, 2024
e6cb402
Merge branch 'main' of https://github.com/finos/rune-dsl into transla…
SimonCockx Jul 4, 2024
473345c
WIP
SimonCockx Jul 4, 2024
96432ab
WIP
SimonCockx Jul 4, 2024
34b6cd2
implement alias aware normalizer
davidalk Jul 5, 2024
6fb8692
Merge remote-tracking branch 'origin/main' into translate-syntax-3
davidalk Jul 5, 2024
448a06d
Merge branch 'main' into translate-syntax-3
davidalk Jul 5, 2024
62de8b3
Merge branch 'main' into translate-syntax
SimonCockx Jul 5, 2024
49c8d17
fix deresolve bug for import as
davidalk Jul 5, 2024
53ba2a2
Merge branch 'translate-syntax' of github.com:finos/rune-dsl into tra…
davidalk Jul 5, 2024
7e64ef6
remove reduced dep pom
davidalk Jul 5, 2024
c8b47f1
update gitignore
davidalk Jul 5, 2024
5f8ffd9
Implemented code generation excluding meta features
SimonCockx Jul 5, 2024
473a181
Merge branch 'translate-syntax' of https://github.com/finos/rune-dsl …
SimonCockx Jul 5, 2024
21c4045
Merge branch 'translate-syntax' of https://github.com/regnosys/rune-d…
SimonCockx Jul 5, 2024
47e95c3
use standard import normalizer when alias not present
davidalk Jul 5, 2024
2b225b0
Corrections
SimonCockx Jul 5, 2024
0a02446
Merge branch 'translate-syntax' of https://github.com/regnosys/rune-d…
SimonCockx Jul 5, 2024
5aaa7f9
Merge remote-tracking branch 'origin/main' into translate-syntax
davidalk Jul 18, 2024
54c286b
Fix incorrectly updated test expectation
davidalk Jul 19, 2024
e12dfe8
fix issue with importing same namespace from two models
davidalk Jul 19, 2024
bbee346
fix alias validation error assert
davidalk Jul 19, 2024
12f4e99
disable translate with meta test to run build
davidalk Jul 19, 2024
14ac558
Limit class name sizes when they would cause file length over 255
davidalk Jul 22, 2024
49f8d9e
remove print
davidalk Jul 22, 2024
1fa7591
Update ROperation to handle meta feature
davidalk Jul 23, 2024
d4e9847
Build generation, still need import
davidalk Jul 23, 2024
bc1531c
got it working!
davidalk Jul 23, 2024
c0bad4a
Test that other meta types are not set
davidalk Jul 24, 2024
bd51037
Use generated import for MetaFields
davidalk Jul 24, 2024
ef3252f
Implemented meta operation Java generation
SimonCockx Jul 29, 2024
92e671f
Merge branch 'main' into translate-syntax
SimonCockx Jul 29, 2024
5945387
Fixed multi meta generation
SimonCockx Jul 29, 2024
0c61417
Fixed external keys/references
SimonCockx Jul 30, 2024
2aac1e7
WIP
SimonCockx Jul 31, 2024
3fe722d
Implemented translate dispatch syntax
SimonCockx Jul 31, 2024
b9aaf7e
Implemented translate dispatch syntax
SimonCockx Jul 31, 2024
f571576
Implemented GoTo for translations
SimonCockx Aug 1, 2024
1ecfd50
Implemented find references for translations
SimonCockx Aug 1, 2024
6c43611
Changed size of references
SimonCockx Aug 2, 2024
f316241
Merge branch 'main' of https://github.com/finos/rune-dsl into issue785
SimonCockx Aug 2, 2024
fd377b9
Fixes #785
SimonCockx Aug 2, 2024
539c614
Support for root elements inside a translate source
SimonCockx Aug 6, 2024
6767094
Implemented syntax highlighting
SimonCockx Aug 6, 2024
1686364
Implemented implicit enum scoping
SimonCockx Aug 7, 2024
4e2af0e
Implemented implicit enum scoping
SimonCockx Aug 7, 2024
3e65df7
add syntax for switch
davidalk Aug 7, 2024
7d0741b
Fixed oversized parser
SimonCockx Aug 8, 2024
a42d4bf
Test valid switch syntax works
davidalk Aug 8, 2024
3b3b420
Merged
SimonCockx Aug 8, 2024
5b7dc93
Merged
SimonCockx Aug 8, 2024
2ea243a
add validation for switch argument
davidalk Aug 8, 2024
6e5cf56
Merge branch 'translate-syntax-3' of github.com:REGnosys/rune-dsl int…
davidalk Aug 8, 2024
7d79b24
add validtion check for switch conditions
davidalk Aug 8, 2024
cb5894a
Initial change
SimonCockx Aug 9, 2024
5b4f95f
Merge branch 'translate-syntax-3' of https://github.com/REGnosys/rune…
SimonCockx Aug 9, 2024
1d19b70
i'm committing this so eclipse doesn't loose all my work again!
davidalk Aug 9, 2024
83ad831
disabling test
davidalk Aug 9, 2024
cddddcd
save
davidalk Aug 9, 2024
4116032
save
davidalk Aug 12, 2024
3027942
implement switch oeration happy path
davidalk Aug 12, 2024
7d57549
Added support for basic type extensions
SimonCockx Aug 12, 2024
b14d3d5
make switch work with default and implicit defaults
davidalk Aug 12, 2024
9fb3f55
Added syntax for references
SimonCockx Aug 12, 2024
d8512bd
Merged
SimonCockx Aug 12, 2024
0635303
Revert "Merged"
davidalk Aug 14, 2024
b9a4758
bring back definable on set and add operations
davidalk Aug 15, 2024
634eca0
Revert "Revert "Merged""
SimonCockx Aug 20, 2024
13c8405
Fixed
SimonCockx Aug 20, 2024
cf288a8
WIP
SimonCockx Aug 20, 2024
9a553ac
Implemented reference resolving
SimonCockx Aug 20, 2024
2adf8ba
Fixed
SimonCockx Aug 21, 2024
3daf3b5
Fixed
SimonCockx Aug 21, 2024
49fd30d
Merge remote-tracking branch 'origin/main' into translate-syntax-3
davidalk Aug 21, 2024
6067ce7
fixed alias normalizer
davidalk Aug 22, 2024
d2aa9ce
Add syntax for meta constructor
davidalk Aug 22, 2024
b224803
Implement syntax and validation for meta constructor
davidalk Aug 22, 2024
2c4d91f
Fixed
SimonCockx Aug 22, 2024
a458397
Merge branch 'translate-syntax-3' of https://github.com/REGnosys/rune…
SimonCockx Aug 22, 2024
1945624
Fixed most highlighting issues
SimonCockx Aug 22, 2024
b7275bc
Fixed more highlighting issues
SimonCockx Aug 23, 2024
4954ce9
Improved value extension constructor syntax
SimonCockx Aug 23, 2024
68b9987
Fixed tests
SimonCockx Aug 23, 2024
848f845
add meta constructor generation for data types
davidalk Aug 23, 2024
654e3f8
Fix
SimonCockx Aug 23, 2024
f0cbde0
Merge branch 'translate-syntax-3' of https://github.com/REGnosys/rune…
SimonCockx Aug 23, 2024
dfabdac
test with references
davidalk Aug 23, 2024
01f7bfa
Merge branch 'translate-syntax-3' of github.com:REGnosys/rune-dsl int…
davidalk Aug 23, 2024
c6c766a
Fixed null pointers
SimonCockx Aug 23, 2024
5bddaef
Merge branch 'translate-syntax-3' of https://github.com/REGnosys/rune…
SimonCockx Aug 23, 2024
2cd071e
Fixes
SimonCockx Aug 26, 2024
790c655
Coercion fix
SimonCockx Aug 26, 2024
dd032d5
Null key fix
SimonCockx Aug 26, 2024
f6e15ee
Null key fix
SimonCockx Aug 26, 2024
69acd0c
Builder proxy fix
SimonCockx Aug 26, 2024
3ad5d8e
Builder proxy fix
SimonCockx Aug 26, 2024
fcc4d2b
Fixes
SimonCockx Aug 26, 2024
ed2234f
Fixes
SimonCockx Aug 26, 2024
4d27354
Fixed switch
SimonCockx Aug 27, 2024
48950ac
Semantic tokens
SimonCockx Aug 27, 2024
3f075ef
Fixes
SimonCockx Aug 27, 2024
bc5e42c
fix issue with unresolved feature calls inside switch statements
davidalk Aug 27, 2024
4b2acd2
fix null types coming from casFeatureCall
davidalk Aug 27, 2024
9f7f44c
implement syntax - commented out until sequencer fix
davidalk Aug 30, 2024
d82f2f4
save
davidalk Sep 2, 2024
24d85bd
write case regex
davidalk Sep 2, 2024
982bee4
write case regex
davidalk Sep 2, 2024
b391a4f
Updated tokenization
SimonCockx Sep 2, 2024
0028e5c
Merge branch 'translate-syntax-3' of https://github.com/REGnosys/rune…
SimonCockx Sep 2, 2024
7982e17
write package if clause matcher
davidalk Sep 2, 2024
c80b6af
refine package matcher to exclude last if clause
davidalk Sep 2, 2024
a0127cd
update matcher for case pattern
davidalk Sep 3, 2024
f101eef
Merge branch 'translate-syntax-3' of github.com:REGnosys/rune-dsl int…
davidalk Sep 3, 2024
0a9adc5
strip out semantic sequencer fix
davidalk Sep 3, 2024
e21267c
Merge pull request #2 from REGnosys/t3-tmp
davidalk Sep 3, 2024
6200e86
Merge branch 'main' into translate-syntax-3
SimonCockx Sep 3, 2024
122444a
Merge remote-tracking branch 'origin/main' into translate-syntax-3
davidalk Sep 11, 2024
b192e79
save fixes so far...
davidalk Sep 11, 2024
502348e
save
davidalk Sep 12, 2024
70360a6
Fixed tests
SimonCockx Sep 12, 2024
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
266 changes: 257 additions & 9 deletions rosetta-ide/rosetta.tmLanguage.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ import com.regnosys.rosetta.ide.contentassist.cancellable.CancellableRosettaPars
import com.regnosys.rosetta.ide.contentassist.cancellable.CancellableContentAssistService
import com.regnosys.rosetta.ide.contentassist.cancellable.RosettaOperationCanceledManager
import com.regnosys.rosetta.ide.semantictokens.RosettaSemanticTokenModifiersProvider
import org.eclipse.xtext.ide.server.symbol.DocumentSymbolService
import com.regnosys.rosetta.ide.symbol.RosettaDocumentSymbolService
import org.eclipse.xtext.findReferences.TargetURICollector
import com.regnosys.rosetta.ide.symbol.RosettaTargetURICollector

/**
* Use this class to register ide components.
Expand Down Expand Up @@ -95,4 +99,12 @@ class RosettaIdeModule extends AbstractRosettaIdeModule {
def Class<? extends OperationCanceledManager> bindOperationCanceledManager() {
RosettaOperationCanceledManager
}

def Class<? extends DocumentSymbolService> bindDocumentSymbolService() {
RosettaDocumentSymbolService
}

def Class<? extends TargetURICollector> bindTargetURICollector() {
RosettaTargetURICollector
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.regnosys.rosetta.ide.build;

import static com.google.common.collect.Iterables.transform;
import static org.eclipse.xtext.resource.persistence.SerializationExtensions.readCastedObject;

import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IReferenceDescription;
import org.eclipse.xtext.resource.persistence.SerializableEObjectDescription;
import org.eclipse.xtext.resource.persistence.SerializableEObjectDescriptionProvider;
import org.eclipse.xtext.resource.persistence.SerializableReferenceDescription;
import org.eclipse.xtext.resource.persistence.SerializableResourceDescription;

import com.google.common.collect.Lists;
import com.regnosys.rosetta.resource.IImplicitReferenceDescription;
import com.regnosys.rosetta.resource.IRosettaResourceDescription;

public class RosettaSerializableResourceDescription extends SerializableResourceDescription implements IRosettaResourceDescription {

private List<SerializableImplicitReferenceDescription> implicitReferences = Collections.emptyList();

@Override
public void updateResourceURI(URI uri) {
for (SerializableImplicitReferenceDescription implRef : implicitReferences) {
implRef.updateResourceURI(uri, getURI());
}
super.updateResourceURI(uri);
}

@Override
@SuppressWarnings("unchecked")
public Iterable<IImplicitReferenceDescription> getImplicitReferenceDescriptions() {
return ((Iterable<IImplicitReferenceDescription>) ((Iterable<?>) implicitReferences));
}

@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
int implicitReferencesSize = in.readInt();
implicitReferences = new ArrayList<>(implicitReferencesSize);
for (int i = 0; i < implicitReferencesSize; i++)
implicitReferences.add(readCastedObject(in));
}

@Override
public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
out.writeInt(implicitReferences.size());
for (SerializableImplicitReferenceDescription implRef : implicitReferences)
out.writeObject(implRef);
}

public List<SerializableImplicitReferenceDescription> getImplicitReferences() {
return implicitReferences;
}

public void setImplicitReferences(List<SerializableImplicitReferenceDescription> implicitReferences) {
this.implicitReferences = implicitReferences;
}

public static RosettaSerializableResourceDescription createCopy(IRosettaResourceDescription desc) {
RosettaSerializableResourceDescription description = new RosettaSerializableResourceDescription();
description.setURI(desc.getURI());
description.setDescriptions(Lists.newArrayList(
transform(desc.getExportedObjects(), RosettaSerializableResourceDescription::createCopy)));
description.setReferences(Lists.newArrayList(
transform(desc.getReferenceDescriptions(), RosettaSerializableResourceDescription::createCopy)));
description.setImportedNames(Lists.newArrayList(desc.getImportedNames()));
description.setImplicitReferences(Lists.newArrayList(
transform(desc.getImplicitReferenceDescriptions(), RosettaSerializableResourceDescription::createCopy)));
return description;
}

private static SerializableEObjectDescription createCopy(IEObjectDescription desc) {
if (desc instanceof SerializableEObjectDescriptionProvider)
return ((SerializableEObjectDescriptionProvider) desc).toSerializableEObjectDescription();
SerializableEObjectDescription result = new SerializableEObjectDescription();
result.setEClass(desc.getEClass());
result.setEObjectURI(desc.getEObjectURI());
result.setQualifiedName(desc.getQualifiedName());
result.setUserData(new HashMap<String, String>(desc.getUserDataKeys().length));
for (String key : desc.getUserDataKeys())
result.getUserData().put(key, desc.getUserData(key));
return result;
}

private static SerializableReferenceDescription createCopy(IReferenceDescription desc) {
SerializableReferenceDescription result = new SerializableReferenceDescription();
result.setSourceEObjectUri(desc.getSourceEObjectUri());
result.setTargetEObjectUri(desc.getTargetEObjectUri());
result.setEReference(desc.getEReference());
result.setIndexInList(desc.getIndexInList());
result.setContainerEObjectURI(desc.getContainerEObjectURI());
return result;
}

private static SerializableImplicitReferenceDescription createCopy(IImplicitReferenceDescription desc) {
SerializableImplicitReferenceDescription result = new SerializableImplicitReferenceDescription();
result.setSourceEObjectUri(desc.getSourceEObjectUri());
result.setTargetEObjectUri(desc.getTargetEObjectUri());
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.regnosys.rosetta.ide.build;

import org.eclipse.xtext.build.IncrementalBuilder;
import org.eclipse.xtext.resource.IResourceDescription;

import com.regnosys.rosetta.resource.IRosettaResourceDescription;

public class RosettaStatefulIncrementalBuilder extends IncrementalBuilder.InternalStatefulIncrementalBuilder {
@Override
protected IResourceDescription getSerializableResourceDescription(IResourceDescription description) {
if (description instanceof IRosettaResourceDescription) {
return RosettaSerializableResourceDescription.createCopy((IRosettaResourceDescription)description);
}
return super.getSerializableResourceDescription(description);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.regnosys.rosetta.ide.build;

import static org.eclipse.xtext.resource.persistence.SerializationExtensions.readURI;
import static org.eclipse.xtext.resource.persistence.SerializationExtensions.writeURI;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

import org.eclipse.emf.common.util.URI;

import com.regnosys.rosetta.resource.IImplicitReferenceDescription;

public class SerializableImplicitReferenceDescription implements IImplicitReferenceDescription, Externalizable {
private URI sourceEObjectUri;

private URI targetEObjectUri;

@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
sourceEObjectUri = readURI(in);
targetEObjectUri = readURI(in);
}

@Override
public void writeExternal(ObjectOutput out) throws IOException {
writeURI(out, sourceEObjectUri);
writeURI(out, targetEObjectUri);
}

public void updateResourceURI(URI newURI, URI oldURI) {
sourceEObjectUri = newURI.appendFragment(sourceEObjectUri.fragment());
if (targetEObjectUri.trimFragment().equals(oldURI))
targetEObjectUri = newURI.appendFragment(targetEObjectUri.fragment());
}

public URI getSourceEObjectUri() {
return sourceEObjectUri;
}

public void setSourceEObjectUri(URI sourceEObjectUri) {
this.sourceEObjectUri = sourceEObjectUri;
}

public URI getTargetEObjectUri() {
return targetEObjectUri;
}

public void setTargetEObjectUri(URI targetEObjectUri) {
this.targetEObjectUri = targetEObjectUri;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@
import com.regnosys.rosetta.rosetta.RosettaSymbol;
import com.regnosys.rosetta.rosetta.RosettaType;
import com.regnosys.rosetta.rosetta.RosettaTypeAlias;
import com.regnosys.rosetta.rosetta.translate.TranslationParameter;
import com.regnosys.rosetta.rosetta.TypeCall;
import com.regnosys.rosetta.rosetta.TypeParameter;
import com.regnosys.rosetta.rosetta.expression.ClosureParameter;
import com.regnosys.rosetta.rosetta.expression.ConstructorKeyValuePair;
import com.regnosys.rosetta.rosetta.expression.RosettaExpression;
import com.regnosys.rosetta.rosetta.expression.RosettaFeatureCall;
import com.regnosys.rosetta.rosetta.expression.RosettaImplicitVariable;
import com.regnosys.rosetta.rosetta.expression.RosettaSymbolReference;
Expand All @@ -62,6 +64,7 @@
import static com.regnosys.rosetta.rosetta.simple.SimplePackage.Literals.*;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
Expand All @@ -76,7 +79,7 @@ public class RosettaSemanticTokensService extends AbstractSemanticTokensService
private CardinalityProvider cardinalityProvider;
@Inject
private RosettaTypeProvider typeProvider;

@Inject
public RosettaSemanticTokensService(ISemanticTokenTypesProvider tokenTypesProvider,
ISemanticTokenModifiersProvider tokenModifiersProvider) {
Expand Down Expand Up @@ -174,7 +177,7 @@ private SemanticToken markAttribute(EObject objectToMark, EStructuralFeature fea
} else if (t == AttributeType.OUTPUT) {
return createSemanticToken(objectToMark, featureToMark, OUTPUT, getCardinalityModifier(attribute));
}

RosettaSemanticTokenTypesEnum tokenType = null;
EReference containmentFeature = attribute.eContainmentFeature();
if (containmentFeature.equals(FUNCTION__INPUTS)) {
Expand Down Expand Up @@ -283,6 +286,8 @@ private SemanticToken markSymbol(EObject objectToMark, EStructuralFeature featur
return markAlias(objectToMark, featureToMark, (ShortcutDeclaration)symbol);
} else if (symbol instanceof TypeParameter) {
return createSemanticToken(objectToMark, featureToMark, PARAMETER);
} else if (symbol instanceof TranslationParameter) {
return createSemanticToken(objectToMark, featureToMark, PARAMETER);
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@
import java.lang.reflect.InvocationTargetException;

import org.eclipse.lsp4j.services.LanguageServer;
import org.eclipse.xtext.build.IncrementalBuilder.InternalStatefulIncrementalBuilder;
import org.eclipse.xtext.ide.server.ILanguageServerShutdownAndExitHandler;
import org.eclipse.xtext.ide.server.LanguageServerImpl;
import org.eclipse.xtext.ide.server.ServerModule;
import org.eclipse.xtext.ide.server.concurrent.RequestManager;
import org.eclipse.xtext.service.AbstractGenericModule;

import com.google.inject.util.Modules;
import com.regnosys.rosetta.ide.build.RosettaStatefulIncrementalBuilder;
import com.google.inject.Module;

public class RosettaServerModule extends AbstractGenericModule {
Expand Down Expand Up @@ -78,4 +80,8 @@ public Class<? extends RequestManager> bindRequestManager() {
public Class<? extends ILanguageServerShutdownAndExitHandler> bindILanguageServerShutdownAndExitHandler() {
return RosettaLanguageServerShutdownAndExitHandler.class;
}

public Class<? extends InternalStatefulIncrementalBuilder> bindInternalStatefulIncrementalBuilder() {
return RosettaStatefulIncrementalBuilder.class;
}
}
Loading