Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    moglideveloper
    @moglideveloper

    There is a sample intellij plugin that depends on org.intellij.scala plugin also.
    Now, this sample intellij plugin has a functionality to fetch json over http and then parse it.

    For parsing json in scala, there are multiple libraries, and we decided to use spray json library.


    Reason for choosing spray json :-

    spray json library is present in library dependency graph of org.intellij.scala, and sample intellij plugin directly depends on org.intellij.scala plugin.

    So to keep sample intellij plugin library size minimum, we thought of using json parser library that is used by org.intellij.scala plugin.

    But, we are getting PluginClassLoader exception :-

    java.lang.LinkageError: loader constraint violation: when resolving method 'spray.json.RootJsonFormat spray.json.DefaultJsonProtocol$.jsonFormat1(scala.Function1, spray.json.JsonFormat, scala.reflect.ClassTag)' the class loader com.intellij.ide.plugins.cl.PluginClassLoader @2a4b0539 of the current class, com/sample/plugin/FetchDomainObjectsFromWire, and the class loader com.intellij.ide.plugins.cl.PluginClassLoader @573b8e9c for the method's defining class, spray/json/DefaultJsonProtocol$, have different Class objects for the type scala/Function1 used in the signature (com.sample.plugin.FetchDomainObjectsFromWire is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @2a4b0539, parent loader 'bootstrap'; spray.json.DefaultJsonProtocol$ is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @573b8e9c, parent loader 'bootstrap')

    Our understanding so far for this exception :-

    As org.intellij.scala and sample intellij are loaded in different classloaders, so sample intellij plugin can't use any class loaded by PluginClassLoader of org.intellij.scala.
    To use spray json classes in sample intellij plugin, spray json should be explicitly added to libraryDependencies in sample intellij plugin.

    Adding spray json to libraryDependencies in sample intellij plugin will solve the class-loader issue,

    but increase the packaged plugin binary size, as spray json library is also packaged in sample intellij plugin.

    plugin.xml

        <id>com.logicovercode</id>
        <name>IjPlugin</name>
        <vendor email="moglideveloper@gmail.com" url="https://github.com/JetBrains/sbt-idea-plugin/discussions/107">Linkage Error</vendor>
        <version>2021.1.18</version>
        <depends>org.intellij.scala</depends>
        <idea-version since-build="211.5538" until-build="211.*"/>

    build.sbt :

    scalaVersion := "2.13.2"
    
    intellijPlugins += "org.intellij.scala:2021.1.18".toPlugin
    intellijDownloadSources := true
    ThisBuild / bundleScalaLibrary  := false

    plugins.sbt

    addSbtPlugin("org.jetbrains" % "sbt-idea-plugin" % "3.12.2")


    Final Note: if spray-json is not present in SamplePlugin/target/plugin/logicIj/lib, then plugin is giving LinkageError, when run from intellij-run configuration or by loading sample plugin izip in fresh intellij instance.

    Kindly confirm, if our understanding is correct and please suggest recommended approach/ best practices for this scenario.

    For reference purpose, this question can also be found here :
    https://github.com/JetBrains/sbt-idea-plugin/discussions/107

    Thanks.

    1 reply
    Oron Port
    @soronpo
    If you want to find Scala 3 issues, just try using the Scala 3 compiler with IntelliJ. Sadly it's currently completely broken.
    It looks like IJ thinks this project is a Scala 2 project.
    Kai
    @neko-kai
    @soronpo I found that when using bsp import Intellij classifies the project correctly and it's usable
    Naftoli Gugenheim
    @nafg
    Hi, what's the current state of these setups?
    • Scala 3 support -- when is that expected to be fully usable?
    • Mill projects
    • Import via BSP
    Swoorup Joshi
    @Swoorup
    image.png
    Union types not working, this is a dealbreaker for me
    Arsene
    @Tochemey
    Hey good people. Can we use scala 3 smoothly with IntelliJ or we will have to wait for a while.
    11 replies
    Aaron Radzinski
    @aradzinski
    Would really be nice to get some attention to https://youtrack.jetbrains.com/issue/SCL-19068 - without it Scala3 is unusable for maven-based projects
    Michael Pilquist
    @mpilquist
    Anyone having any luck using Intellij with Scala 3 final? Go-to-definition is broken for external libraries and when I expand individual external libraries in the project pane, they don't have any classes in them.
    2 replies
    Jim Newton
    @jimka2001
    when thee test case source code is displayed in IntelliJ there is a little green run-triangle beside the test. I can press the mouse button. on that little triangle to launch the particular test. Doing so launches a particular java executable. /Applications/IntelliJ IDEA CE.app/Contents/jbr/Contents/Home/bin/java, in my case. What controls which java executable path is used here? It is different on my 2 laptops, and I cannot figure out why.
    13 replies
    Screenshot 2021-05-27 at 14.34.59.png
    Screenshot 2021-05-27 at 14.21.29.png
    1 reply
    I've tried changing the JDK selection in the Preferences, but that seems to have no effect.
    Jim Newton
    @jimka2001
    Screenshot 2021-05-27 at 19.46.33.png
    aerua
    @aerua:matrix.org
    [m]

    Hi, I’m trying out Scala 3 and it when I import a project, I don’t get any autocompletion for new keywords (though highlighting works) and indentation also doesn’t seem to work if I got bracketless.

    I understood that Scala 3 was already supported in the latest version of the IntelliJ scala plugin. But what is the extent of that support? I tried looking up online if there is a list of known current issues but I didn’t find anything so far. Are the issues mentioned above expected?

    James Yoo
    @jyoo980
    An answer to @aerua:matrix.org 's question might be useful, I'm sitting on some weird behaviour that I might report as a bug if it's not already documented as such
    Nikolay Tropin
    @niktrop
    @aerua:matrix.org , @jyoo980 What version of Scala plugin do you use? You may use IDEA 2021.2 EAP to try latest updates, they are not yet backported to the stable versions. We are trying to make optional braces as convenient as possible. If problems are still there please report a new issue
    https://youtrack.jetbrains.com/newIssue?project=SCL
    3 replies
    Igal Tabachnik
    @hmemcpy
    image.png
    3 replies
    Congratulations on graduating the super-secret experimental option :)
    Justin Kaeser
    @jastice
    you found it :tada:
    you can also enabledisable it from action search
    Igal Tabachnik
    @hmemcpy
    Sweet! Can't live without my action search :)
    Also, I'm using the classic IntelliJ shortcuts, so on macOS one needs to disable the damn "open man pages in Terminal" global shortcut first :)
    Justin Kaeser
    @jastice
    xD
    Ben Hutchison
    @benhutchison

    The advantages of Scala 3 seem to have enabled the implementation of Code Completion in Intellij to be dramatically simplified! The new Scala 3 version is massively simpler than the Scala 2 version :

    def codeCompletionSuggestions(ctx: CodeContext, editorContext: EditorContext, ref: ProjectRef) = Global.showFailAlert("Cannot Perform Operation. Too complex, sorry.")

    6 replies
    Arsene
    @Tochemey
    Hello folks I am having the issue reported here with the latest intelliJ Ultimate https://youtrack.jetbrains.com/issue/IDEA-235805
    4 replies
    This is the first time having that.
    Ahmet Turk
    @ahmet_turk_gitlab
    Hi all, does anyone know if Intellij support click to see differences feature for any of the scala test frameworks?
    I would like to be able t, lest say, compare two list of case classes and get click to see differences when test fails.
    4 replies
    Nikita Gazarov
    @raquo
    Is there any ETA on when Scala 3 support will be approx as good as Scala 2 in IntelliJ? Or at least reasonably complete?
    1 reply
    Igal Tabachnik
    @hmemcpy
    Hi all, just sent a PR to upgrade the plugin to use sbt 1.5.3! Who is brave enough to check it? :P JetBrains/intellij-scala#590
    Eric Peters
    @er1c
    is there an easy way to turn off certain scala compiler flags (like warn on discard units) only while using intellij's native compiling? using sbt shell works but you don't get the nice point/click on failed files/etc
    2 replies
    or turn off test compiling maybe?
    Roman Janusz
    @ghik
    Hi, what's the best resource to track IntelliJ Scala plugin progress on Scala 3 support?
    1 reply
    Igal Tabachnik
    @hmemcpy
    Is there a way to explicitly mark a specific directory as excluded? In my project there's a web project that contains a generated .caches directory, and I want to mark it as always excluded (so it survives a re-import). Is there a way to do this with IntelliJ somehow? Perhaps, a .ignore file of sorts?
    2 replies
    Swoorup Joshi
    @Swoorup
    Each update excitement of Scala 3 builds up, but … :smile:
    image.png
    Igal Tabachnik
    @hmemcpy
    Good evening! Is there a way to disable automatic refactoring of _ to * (including replacing => with as) during optimize imports, when -Xsource:3 is enabled?
    1 reply
    Unfortunately we're still using an older version of scalafmt and it doesn't like the as in Scala2 sources.
    I'm guessing that's more of a Tobias Kahlert question :)
    Igal Tabachnik
    @hmemcpy
    image.png
    What does Incrementally type do, and whether turning Zinc on help?
    2 replies
    Igal Tabachnik
    @hmemcpy
    Hey, a question to the PSI experts: I have 2 ReferenceExpressions: _.get.foo and _.get. I want to rewrite it to _.foo. Is there a way for me to somehow "subtract" the qualifying reference?
    8 replies
    I mean, I can do something nasty with substrings, but I was hoping that the PSI had a util somewhere
    kyrill
    @cyrillyun

    hey folks, I'm having issues with Scala 3 autocomplete similar to ones @aerua:matrix.org has. Autocomplete kinda "works", but it does not suggest any methods available for classes or objects I am working with. Switching to Scala 2 fixes the issue. I am on Intellij IDE 2021.2 EAP CE with Scala plugin 2021.2.9.

    Also, when I am trying to "go to implementation" of some third-party classes, it fails to perform operation with the message "Cannot perform operation. Too complex, sorry"

    Is it expected behavior or my local configuration has some issues?

    2 replies
    Swoorup Joshi
    @Swoorup
    expected behaviuour
    Swoorup Joshi
    @Swoorup
    It is pretty widely known among previous IntelliJ scasla users, metals is your best bet btw for now.