Use target platform interface instead of psi platform

This commit is contained in:
Nikolay Krasko
2013-04-11 17:41:40 +04:00
parent 87c9a65667
commit 9ccd6b847f
6 changed files with 56 additions and 57 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.jet.completion;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor;
import org.jetbrains.jet.plugin.project.TargetPlatform;
public abstract class AbstractJavaCompletionTest extends JetFixtureCompletionBaseTestCase { public abstract class AbstractJavaCompletionTest extends JetFixtureCompletionBaseTestCase {
@NotNull @NotNull
@@ -28,7 +29,7 @@ public abstract class AbstractJavaCompletionTest extends JetFixtureCompletionBas
} }
@Override @Override
public ExpectedCompletionUtils.Platform getPlatform() { public TargetPlatform getPlatform() {
return ExpectedCompletionUtils.Platform.JAVA; return TargetPlatform.JVM;
} }
} }
@@ -29,6 +29,7 @@ import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.PluginTestCaseBase;
import org.jetbrains.jet.plugin.project.TargetPlatform;
import org.jetbrains.jet.testing.ConfigLibraryUtil; import org.jetbrains.jet.testing.ConfigLibraryUtil;
import java.io.File; import java.io.File;
@@ -79,7 +80,7 @@ public abstract class AbstractJavaWithLibCompletionTest extends JetFixtureComple
} }
@Override @Override
public ExpectedCompletionUtils.Platform getPlatform() { public TargetPlatform getPlatform() {
return ExpectedCompletionUtils.Platform.JAVA; return TargetPlatform.JVM;
} }
} }
@@ -19,6 +19,7 @@ package org.jetbrains.jet.completion;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetStdJSProjectDescriptor; import org.jetbrains.jet.plugin.JetStdJSProjectDescriptor;
import org.jetbrains.jet.plugin.project.TargetPlatform;
public abstract class AbstractJetJSCompletionTest extends JetFixtureCompletionBaseTestCase { public abstract class AbstractJetJSCompletionTest extends JetFixtureCompletionBaseTestCase {
@NotNull @NotNull
@@ -28,7 +29,7 @@ public abstract class AbstractJetJSCompletionTest extends JetFixtureCompletionBa
} }
@Override @Override
public ExpectedCompletionUtils.Platform getPlatform() { public TargetPlatform getPlatform() {
return ExpectedCompletionUtils.Platform.JS; return TargetPlatform.JS;
} }
} }
@@ -16,23 +16,15 @@
package org.jetbrains.jet.completion; package org.jetbrains.jet.completion;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetLightProjectDescriptor; import org.jetbrains.jet.plugin.JetLightProjectDescriptor;
import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.project.TargetPlatform;
import java.io.File;
public abstract class AbstractKeywordCompletionTest extends JetFixtureCompletionBaseTestCase { public abstract class AbstractKeywordCompletionTest extends JetFixtureCompletionBaseTestCase {
@Override @Override
public ExpectedCompletionUtils.Platform getPlatform() { public TargetPlatform getPlatform() {
return ExpectedCompletionUtils.Platform.JAVA; return TargetPlatform.JVM;
} }
@NotNull @NotNull
@@ -27,6 +27,7 @@ import junit.framework.Assert;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.InTextDirectivesUtils; import org.jetbrains.jet.InTextDirectivesUtils;
import org.jetbrains.jet.plugin.project.TargetPlatform;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -42,12 +43,6 @@ public class ExpectedCompletionUtils {
private ExpectedCompletionUtils() { private ExpectedCompletionUtils() {
} }
enum Platform {
JAVA,
JS,
ALL
}
public static class CompletionProposal { public static class CompletionProposal {
public static final Pattern PATTERN = Pattern.compile("([^~@]*)(@([^~]*))?(~(.*))?"); public static final Pattern PATTERN = Pattern.compile("([^~@]*)(@([^~]*))?(~(.*))?");
public static final int LOOKUP_STRING_GROUP_INDEX = 1; public static final int LOOKUP_STRING_GROUP_INDEX = 1;
@@ -97,6 +92,8 @@ public class ExpectedCompletionUtils {
return result.toString(); return result.toString();
} }
} }
private static final String UNSUPPORTED_PLATFORM_MESSAGE = String.format("Only %s and %s platforms are supported", TargetPlatform.JVM, TargetPlatform.JS);
private static final String EXIST_LINE_PREFIX = "EXIST:"; private static final String EXIST_LINE_PREFIX = "EXIST:";
@@ -128,41 +125,45 @@ public class ExpectedCompletionUtils {
WITH_ORDER_PREFIX); WITH_ORDER_PREFIX);
@NotNull @NotNull
public static CompletionProposal[] itemsShouldExist(String fileText, Platform platform) { public static CompletionProposal[] itemsShouldExist(String fileText, @Nullable TargetPlatform platform) {
switch (platform) { if (platform == null) {
case ALL: return processProposalAssertions(fileText, EXIST_LINE_PREFIX);
return processProposalAssertions(fileText, EXIST_LINE_PREFIX); }
case JAVA: else if (platform == TargetPlatform.JVM) {
return processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX); return processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX);
case JS: }
return processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX); else if (platform == TargetPlatform.JS) {
return processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX);
}
else {
throw new IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE);
} }
throw new IllegalArgumentException("platform");
} }
@NotNull @NotNull
public static CompletionProposal[] itemsShouldAbsent(String fileText, Platform platform) { public static CompletionProposal[] itemsShouldAbsent(String fileText, @Nullable TargetPlatform platform) {
switch (platform) { if (platform == null) {
case ALL: return processProposalAssertions(fileText, ABSENT_LINE_PREFIX);
return processProposalAssertions(fileText, ABSENT_LINE_PREFIX); }
case JAVA: else if (platform == TargetPlatform.JVM) {
return processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX); return processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX);
case JS: }
return processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX); else if (platform == TargetPlatform.JS) {
return processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX);
}
else {
throw new IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE);
} }
throw new IllegalArgumentException("platform");
} }
@NotNull @NotNull
public static CompletionProposal[] itemsShouldExist(String fileText) { public static CompletionProposal[] itemsShouldExist(String fileText) {
return itemsShouldExist(fileText, Platform.ALL); return itemsShouldExist(fileText, null);
} }
@NotNull @NotNull
public static CompletionProposal[] itemsShouldAbsent(String fileText) { public static CompletionProposal[] itemsShouldAbsent(String fileText) {
return itemsShouldAbsent(fileText, Platform.ALL); return itemsShouldAbsent(fileText, null);
} }
public static CompletionProposal[] processProposalAssertions(String fileText, String... prefixes) { public static CompletionProposal[] processProposalAssertions(String fileText, String... prefixes) {
@@ -180,21 +181,23 @@ public class ExpectedCompletionUtils {
@Nullable @Nullable
public static Integer getExpectedNumber(String fileText) { public static Integer getExpectedNumber(String fileText) {
return getExpectedNumber(fileText, Platform.ALL); return getExpectedNumber(fileText, null);
} }
@Nullable @Nullable
public static Integer getExpectedNumber(String fileText, Platform platform) { public static Integer getExpectedNumber(String fileText, @Nullable TargetPlatform platform) {
switch (platform) { if (platform == null) {
case ALL: return InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX);
return InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX); }
case JAVA: else if (platform == TargetPlatform.JVM) {
return getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX); return getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX);
case JS: }
return getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX); else if (platform == TargetPlatform.JS) {
return getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX);
}
else {
throw new IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE);
} }
throw new IllegalArgumentException("platform");
} }
@Nullable @Nullable
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.codeInsight.completion.CompletionType; import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.jet.plugin.project.TargetPlatform;
public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightFixtureTestCase { public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightFixtureTestCase {
private boolean autocompleteSetting; private boolean autocompleteSetting;
@@ -39,7 +40,7 @@ public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightF
super.tearDown(); super.tearDown();
} }
public abstract ExpectedCompletionUtils.Platform getPlatform(); public abstract TargetPlatform getPlatform();
public void doTest(String testPath) { public void doTest(String testPath) {
myFixture.configureByFile(testPath); myFixture.configureByFile(testPath);