package org.example.xbase.expressions.tests; import com.google.inject.Inject; import org.eclipse.emf.ecore.EClass; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.diagnostics.Diagnostic; import org.eclipse.xtext.junit4.InjectWith; import org.eclipse.xtext.junit4.XtextRunner; import org.eclipse.xtext.junit4.util.ParseHelper; import org.eclipse.xtext.junit4.validation.ValidationTestHelper; import org.eclipse.xtext.xbase.XbasePackage; import org.eclipse.xtext.xbase.lib.Exceptions; import org.eclipse.xtext.xbase.lib.Extension; import org.example.xbase.expressions.ExpressionsInjectorProvider; import org.example.xbase.expressions.expressions.ExpressionsModel; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(XtextRunner.class) @InjectWith(ExpressionsInjectorProvider.class) @SuppressWarnings("all") public class ExpressionsValidatorTest { @Inject @Extension private ParseHelper<ExpressionsModel> _parseHelper; @Inject @Extension private ValidationTestHelper _validationTestHelper; @Test public void testForwardReference() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("val j = i + 1 // forward reference"); _builder.newLine(); _builder.append("val i = 10"); _builder.newLine(); ExpressionsModel _parse = this._parseHelper.parse(_builder); EClass _xFeatureCall = XbasePackage.eINSTANCE.getXFeatureCall(); this._validationTestHelper.assertError(_parse, _xFeatureCall, Diagnostic.LINKING_DIAGNOSTIC, "Couldn\'t resolve reference to JvmIdentifiableElement \'i\'"); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }