use of org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder in project xtext-core by eclipse.
the class TestLanguageReferenceUpdater method updateReference.
@Override
public void updateReference(ITextRegionDiffBuilder rewriter, IUpdatableReference ref) {
if (rewriter.isModified(ref.getReferenceRegion())) {
return;
}
IScope scope = scopeProvider.getScope(ref.getSourceEObject(), ref.getEReference());
ISemanticRegion region = ref.getReferenceRegion();
QualifiedName oldName = nameConverter.toQualifiedName(region.getText());
IEObjectDescription oldDesc = scope.getSingleElement(oldName);
if (oldDesc != null && oldDesc.getEObjectOrProxy() == ref.getTargetEObject()) {
return;
}
String newName = findValidName(ref, scope);
if (newName != null) {
if (oldName.getSegmentCount() > 1) {
newName = oldName.skipLast(1).append(newName).toString();
}
rewriter.replace(region, newName);
}
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder in project xtext-core by eclipse.
the class RegionAccessCommentsTest method testDeleteFirstRegion1.
@Test
public void testDeleteFirstRegion1() throws Exception {
String model = "/*h*/\n" + "\n" + "/*8*/\n" + "8 //8\n" + "/*a*/\n" + "a\n";
ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
ISemanticRegion foo = access.regionForRootEObject().getAllRegionsFor().keyword("8");
it.remove(foo);
});
String expectation = " 0 1 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 13 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " B ValueList'[a]' Root\n" + "13 1 S \"a\" ValueList:name+=ID\n" + " E ValueList'[a]' Root\n" + "14 0 H\n" + "------------ diff 1 ------------\n" + " 0 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*8*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 13 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + "13 1 S \"8\" Root:'8'\n" + "14 H \" \" Whitespace:TerminalRule'WS'\n" + " \"//8\\n" + "\" Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 11 \"\\n" + "\" Whitespace:TerminalRule'WS'\n";
regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder in project xtext-core by eclipse.
the class RegionAccessCommentsTest method testDeleteFirstRegion2.
@Test
public void testDeleteFirstRegion2() throws Exception {
String model = "/*h*/\n" + "\n" + "/*81*/\n" + "/*82*/\n" + "8 //8\n" + "/*a*/\n" + "a\n";
ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
ISemanticRegion foo = access.regionForRootEObject().getAllRegionsFor().keyword("8");
it.remove(foo);
});
String expectation = " 0 1 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 13 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " B ValueList'[a]' Root\n" + "13 1 S \"a\" ValueList:name+=ID\n" + " E ValueList'[a]' Root\n" + "14 0 H\n" + "------------ diff 1 ------------\n" + " 0 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*81*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*82*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 21 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + "21 1 S \"8\" Root:'8'\n" + "22 H \" \" Whitespace:TerminalRule'WS'\n" + " \"//8\\n" + "\" Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 11 \"\\n" + "\" Whitespace:TerminalRule'WS'\n";
regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder in project xtext-core by eclipse.
the class RegionAccessCommentsTest method testDeleteMiddleRegion.
@Test
public void testDeleteMiddleRegion() throws Exception {
String model = "8\n" + "a /*a*/ //a\n" + "/*b1*/\n" + "/*b2*/\n" + "b\n";
ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
ISemanticRegion foo = Iterables.getFirst(access.regionForRootEObject().getAllRegionsFor().features(RegionaccesstestlanguagePackage.Literals.VALUE_LIST__NAME), null);
it.remove(foo);
});
String expectation = " 0 0 H\n" + " B ValueList'[a, b]' Root\n" + " 0 1 S \"8\" Root:'8'\n" + " 1 1 H \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*b1*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*b2*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 15 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + "16 1 S \"b\" ValueList:name+=ID\n" + " E ValueList'[a, b]' Root\n" + "17 0 H\n" + "------------ diff 1 ------------\n" + " 1 1 H \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " 2 1 S \"a\" ValueList:name+=ID\n" + " 3 H \" \" Whitespace:TerminalRule'WS'\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:PREVIOUS\n" + " \" \" Whitespace:TerminalRule'WS'\n" + " \"//a\\n" + "\" Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + " \"/*b1*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*b2*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 25 \"\\n" + "\" Whitespace:TerminalRule'WS'\n";
regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder in project xtext-core by eclipse.
the class RegionAccessCommentsTest method testDeleteFirstRegion3.
@Test
public void testDeleteFirstRegion3() throws Exception {
String model = "/*h*/\n" + "/*81*/\n" + "\n" + "/*82*/\n" + "8 //8\n" + "/*a*/\n" + "a\n";
ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
ISemanticRegion foo = access.regionForRootEObject().getAllRegionsFor().keyword("8");
it.remove(foo);
});
String expectation = " 0 1 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*81*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 20 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " B ValueList'[a]' Root\n" + "20 1 S \"a\" ValueList:name+=ID\n" + " E ValueList'[a]' Root\n" + "21 0 H\n" + "------------ diff 1 ------------\n" + " 0 H \"/*h*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*81*/\" Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " \"\\n" + "\\n" + "\" Whitespace:TerminalRule'WS'\n" + " \"/*82*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 21 \"\\n" + "\" Whitespace:TerminalRule'WS'\n" + "21 1 S \"8\" Root:'8'\n" + "22 H \" \" Whitespace:TerminalRule'WS'\n" + " \"//8\\n" + "\" Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + " \"/*a*/\" Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + " 11 \"\\n" + "\" Whitespace:TerminalRule'WS'\n";
regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Aggregations