示例#1
0
  @Override
  protected ExpectedResolveData getExpectedResolveData() {
    Project project = getProject();
    JetStandardLibrary lib = JetStandardLibrary.getInstance();
    Map<String, DeclarationDescriptor> nameToDescriptor =
        new HashMap<String, DeclarationDescriptor>();
    nameToDescriptor.put(
        "kotlin::Int.plus(Int)", standardFunction(lib.getInt(), "plus", lib.getIntType()));
    FunctionDescriptor descriptorForGet =
        standardFunction(
            lib.getArray(),
            Collections.singletonList(new TypeProjection(lib.getIntType())),
            "get",
            lib.getIntType());
    nameToDescriptor.put("kotlin::Array.get(Int)", descriptorForGet.getOriginal());
    nameToDescriptor.put(
        "kotlin::Int.compareTo(Double)",
        standardFunction(lib.getInt(), "compareTo", lib.getDoubleType()));
    @NotNull
    FunctionDescriptor descriptorForSet =
        standardFunction(
            lib.getArray(),
            Collections.singletonList(new TypeProjection(lib.getIntType())),
            "set",
            lib.getIntType(),
            lib.getIntType());
    nameToDescriptor.put("kotlin::Array.set(Int, Int)", descriptorForSet.getOriginal());

    Map<String, PsiElement> nameToDeclaration = new HashMap<String, PsiElement>();
    PsiClass java_util_Collections = findClass("java.util.Collections");
    nameToDeclaration.put(
        "java::java.util.Collections.emptyList()", findMethod(java_util_Collections, "emptyList"));
    nameToDeclaration.put("java::java.util.Collections", java_util_Collections);
    PsiClass java_util_List = findClass("java.util.List");
    nameToDeclaration.put("java::java.util.List", java_util_List);
    nameToDeclaration.put(
        "java::java.util.List.set()", java_util_List.findMethodsByName("set", true)[0]);
    nameToDeclaration.put(
        "java::java.util.List.get()", java_util_List.findMethodsByName("get", true)[0]);
    nameToDeclaration.put("java::java", findPackage("java"));
    nameToDeclaration.put("java::java.util", findPackage("java.util"));
    nameToDeclaration.put("java::java.lang", findPackage("java.lang"));
    nameToDeclaration.put("java::java.lang.Object", findClass("java.lang.Object"));
    PsiClass java_lang_System = findClass("java.lang.System");
    nameToDeclaration.put("java::java.lang.System", java_lang_System);
    PsiMethod[] methods = findClass("java.io.PrintStream").findMethodsByName("print", true);
    nameToDeclaration.put("java::java.io.PrintStream.print(Object)", methods[8]);
    nameToDeclaration.put("java::java.io.PrintStream.print(Int)", methods[2]);
    nameToDeclaration.put("java::java.io.PrintStream.print(char[])", methods[6]);
    nameToDeclaration.put("java::java.io.PrintStream.print(Double)", methods[5]);
    nameToDeclaration.put(
        "java::java.lang.System.out", java_lang_System.findFieldByName("out", true));
    PsiClass java_lang_Number = findClass("java.lang.Number");
    nameToDeclaration.put("java::java.lang.Number", java_lang_Number);
    nameToDeclaration.put(
        "java::java.lang.Number.intValue()",
        java_lang_Number.findMethodsByName("intValue", true)[0]);

    return new ExpectedResolveData(nameToDescriptor, nameToDeclaration) {
      @Override
      protected JetFile createJetFile(String fileName, String text) {
        return createCheckAndReturnPsiFile(fileName, text);
      }
    };
  }