Giter Site home page Giter Site logo

scala-refactoring's Introduction

scala-refactoring's People

Contributors

adriaanm avatar davidb avatar dnadolny avatar dotta avatar dragos avatar eamelink avatar fommil avatar huitseeker avatar jiminhsieh avatar kiritsuku avatar luegg avatar mdr avatar michih57 avatar milessabin avatar misto avatar mlangc avatar retronym avatar rkrzewski avatar sciss avatar sethtisue avatar soc avatar timcharper avatar vladimirnik avatar wpopielarski avatar xuwei-k avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scala-refactoring's Issues

Compatibility with new Positions

We reverted for now, but we'd like to unrevert.

Here's my attempt at refining Paul's position's improvements to a point were scala-refactoring might be able to adapt to: https://github.com/retronym/scala/tree/topic/parser-revert

That failed with these errors:

Tests in error: 
  PrettyPrinterTest.multipleAssignmentWithTuple:350 » FailedInterrupt Compiler e...
  PrettyPrinterTest.multipleAssignmentWithPimpedTuple:361 » FailedInterrupt Comp...
  PrettyPrinterTest.multipleAssignmentWith4Tuple:372 » FailedInterrupt Compiler ...
  PrettyPrinterTest.multipleAssignmentFromMethodResult:393 » FailedInterrupt Com...
  IndividualSourceGenTest.manyParentheses:375 » FailedInterrupt Compiler excepti...
  IndividualSourceGenTest.newObject:655 » FailedInterrupt Compiler exception dur...
  IndividualSourceGenTest.newParameterizedObject:677 » FailedInterrupt Compiler ...
  IndividualSourceGenTest.newParameterizedObject2:703 » FailedInterrupt Compiler...
  IndividualSourceGenTest.annotation:723 » FailedInterrupt Compiler exception du...
  SourceGenTest.testNew:144 » FailedInterrupt Compiler exception during call to ...
  SourceGenTest.testThrow:166 » FailedInterrupt Compiler exception during call t...
  SourceGenTest.testAnnotation:194 » FailedInterrupt Compiler exception during c...
  SourceGenTest.testWhileLoop:430 » FailedInterrupt Compiler exception during ca...
  SourceGenTest.testDoWhileLoop:482 » FailedInterrupt Compiler exception during ...
  SourceGenTest.testTry:1195 » FailedInterrupt Compiler exception during call to...
  SourceGenTest.testImports:1420 » FailedInterrupt Compiler exception during cal...
  SourceGenTest.multipleAssignmentWithAnnotatedTree:252 » FailedInterrupt Compil...
  SourceGenTest.updateMethod:575 » FailedInterrupt Compiler exception during cal...
  SourceGenTest.testContextBounds:1514 » FailedInterrupt Compiler exception duri...
  RenameTest.renameTo:19 » Runtime Not implemented! Annotated
  RenameTest.renameTo:19 » Runtime Not implemented! Annotated
  RenameTest.renameTo:19 » Runtime Not implemented! Annotated

RFE: add type to member

it would be brilliant to be able to add the type to any member. This is not as trivial as it sounds because the types are often really messy.

Also, it would be excellent if some code could be shared with a standalone tool that could work with input from scalap to use the exact type, not the presentation compiler's (sometimes wrong) guess at the type.

Race condition in AddImportStatement (failing test run)

Log file here.

importWithMultiplePackagesAndBraces(scala.tools.refactoring.tests.implementations.imports.AddImportStatementTest)  Time elapsed: 0.005 sec  <<< FAILURE!
java.lang.AssertionError: assertion failed: Race condition detected: You are running a presentation compiler method outside the PC thread.[phase: <no phase>] Please file a ticket with the current stack trace at https://www.assembla.com/spaces/scala-ide/support/tickets
    at scala.tools.nsc.interactive.Global.assertCorrectThread(Global.scala:501)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1319)
    at scala.reflect.internal.Symbols$ClassSymbol.primaryConstructor(Symbols.scala:3085)
    at scala.reflect.internal.Symbols$Symbol.isPrimaryConstructor(Symbols.scala:806)
    at scala.tools.refactoring.common.PimpedTrees$TemplateMethods$$anonfun$primaryConstructor$1.applyOrElse(PimpedTrees.scala:438)
    at scala.tools.refactoring.common.PimpedTrees$TemplateMethods$$anonfun$primaryConstructor$1.applyOrElse(PimpedTrees.scala:437)
    at scala.PartialFunction$$anonfun$runWith$1.apply(PartialFunction.scala:136)
    at scala.PartialFunction$$anonfun$runWith$1.apply(PartialFunction.scala:135)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.collect(TraversableLike.scala:282)
    at scala.collection.AbstractTraversable.collect(Traversable.scala:104)
    at scala.tools.refactoring.common.PimpedTrees$TemplateMethods.primaryConstructor(PimpedTrees.scala:437)
    at scala.tools.refactoring.common.PimpedTrees$TemplateExtractor$.unapply(PimpedTrees.scala:529)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$children$1.apply(PimpedTrees.scala:606)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$children$1.apply(PimpedTrees.scala:594)
    at scala.tools.refactoring.util.Memoized$$anonfun$apply$1.apply(Memoized.scala:62)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1$1.apply(PimpedTrees.scala:380)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.scala$tools$refactoring$common$PimpedTrees$class$$anonfun$$find$1(PimpedTrees.scala:380)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$apply$8.apply(PimpedTrees.scala:383)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10$$anonfun$apply$8.apply(PimpedTrees.scala:383)
    at scala.Option.map(Option.scala:145)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.apply(PimpedTrees.scala:383)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$10.apply(PimpedTrees.scala:374)
    at scala.tools.refactoring.util.Memoized$$anonfun$on$1.apply(Memoized.scala:42)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$findOriginalTree$1.apply(PimpedTrees.scala:361)
    at scala.tools.refactoring.common.PimpedTrees$$anonfun$findOriginalTree$1.apply(PimpedTrees.scala:359)
    at scala.tools.refactoring.util.Memoized$$anonfun$apply$1.apply(Memoized.scala:62)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$class.isSameAsOriginalTree$1(TreeChangesDiscoverer.scala:98)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$class.findAllChangedTrees(TreeChangesDiscoverer.scala:125)
    at scala.tools.refactoring.implementations.AddImportStatement.findAllChangedTrees(AddImportStatement.scala:14)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$$anonfun$findAllChangedTrees$7.apply(TreeChangesDiscoverer.scala:171)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$$anonfun$findAllChangedTrees$7.apply(TreeChangesDiscoverer.scala:171)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:252)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$class.findAllChangedTrees(TreeChangesDiscoverer.scala:171)
    at scala.tools.refactoring.implementations.AddImportStatement.findAllChangedTrees(AddImportStatement.scala:14)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$$anonfun$findAllChangedTrees$7.apply(TreeChangesDiscoverer.scala:171)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$$anonfun$findAllChangedTrees$7.apply(TreeChangesDiscoverer.scala:171)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:252)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at scala.tools.refactoring.sourcegen.TreeChangesDiscoverer$class.findAllChangedTrees(TreeChangesDiscoverer.scala:171)
    at scala.tools.refactoring.implementations.AddImportStatement.findAllChangedTrees(AddImportStatement.scala:14)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$4$$anonfun$apply$2.apply(SourceGenerator.scala:104)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$4$$anonfun$apply$2.apply(SourceGenerator.scala:104)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.immutable.List.foreach(List.scala:302)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:252)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$4.apply(SourceGenerator.scala:104)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$4.apply(SourceGenerator.scala:103)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:252)
    at scala.collection.immutable.Map$Map1.foreach(Map.scala:110)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:252)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at scala.tools.refactoring.sourcegen.SourceGenerator$class.generateFragmentsFromTrees(SourceGenerator.scala:103)
    at scala.tools.refactoring.implementations.AddImportStatement.generateFragmentsFromTrees(AddImportStatement.scala:14)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$createChanges$1.apply(SourceGenerator.scala:33)
    at scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$createChanges$1.apply(SourceGenerator.scala:33)
    at scala.tools.refactoring.common.SilentTracing$class.context(tracing.scala:69)
    at scala.tools.refactoring.implementations.AddImportStatement.context(AddImportStatement.scala:14)
    at scala.tools.refactoring.sourcegen.SourceGenerator$class.createChanges(SourceGenerator.scala:32)
    at scala.tools.refactoring.implementations.AddImportStatement.createChanges(AddImportStatement.scala:14)
    at scala.tools.refactoring.Refactoring$$anonfun$refactor$1.apply(Refactoring.scala:32)
    at scala.tools.refactoring.Refactoring$$anonfun$refactor$1.apply(Refactoring.scala:31)
    at scala.tools.refactoring.common.SilentTracing$class.context(tracing.scala:69)
    at scala.tools.refactoring.implementations.AddImportStatement.context(AddImportStatement.scala:14)
    at scala.tools.refactoring.Refactoring$class.refactor(Refactoring.scala:31)
    at scala.tools.refactoring.implementations.AddImportStatement.refactor(AddImportStatement.scala:14)
    at scala.tools.refactoring.implementations.AddImportStatement.addImports(AddImportStatement.scala:24)
    at scala.tools.refactoring.implementations.AddImportStatement.addImport(AddImportStatement.scala:18)
    at scala.tools.refactoring.tests.implementations.imports.AddImportStatementTest$$anon$1.<init>(AddImportStatementTest.scala:24)
    at scala.tools.refactoring.tests.implementations.imports.AddImportStatementTest.addImport(AddImportStatementTest.scala:21)
    at scala.tools.refactoring.tests.implementations.imports.AddImportStatementTest.importWithMultiplePackagesAndBraces(AddImportStatementTest.scala:251)

Redundant { in class with empty body after AddMethod

Additional brace is added to the class while using AddMethod refactoring.
Precondition: class/trait should have empty body and parents, braces should be on separate lines

Example:

trait Trait extends TestTrait {
}

the result for such case is:

trait Trait extends TestTrait { {
  def test: Unit = {
    ???
  }
}

For cases:

trait Trait extends TestTrait 
trait Trait extends TestTrait {  }

the result is correct.

it seems that the origin of the problem is in LayoutHelper - during the work of layoutForSingleChild -> splitLayoutBetweenLastChildAndParent (line where Layout is created based on Template and extended type).

`sbt test` in `scala-refactoring/org.scala-refactoring.library` Total 882, Failed 188

I'd like to hack on scala-refactoring. Is there a way to target a single test suite without having to run the entire suite via build.sh (which does work)? there a way to run tests? I looked for documentation

What's the preferred way of running tests?

I can run build.sh and all of works, but when running sbt test many tests fail.

[info] Test scala.tools.refactoring.tests.sourcegen.CustomFormattingTest.testSingleSpace ignored
[error] Test scala.tools.refactoring.tests.sourcegen.TreeChangesDiscovererTest.findChangedName3 failed: expected:<[DefDef(4): DefDef(4), NameTree(4) | DefDef(5): DefDef(5), NameTree(5) | DefDef(6): DefDef(6), NameTree(6])> but was:<[PackageDef(1): ModifierTree(6), NameTree(6), DefDef(6), DefDef(4), ModifierTree(5), Ident(1), Literal(6), NameTree(4), ModifierTree(4), Literal(5), DefDef(5), Template(3), ClassDef(3), NameTree(5), NameTree(3), PackageDef(1), Literal(4])>
[warn] Test assumption in test scala.tools.refactoring.tests.analysis.DeclarationIndexTest.referencesToLazyVal210 failed: org.junit.internal.AssumptionViolatedException: got: <false>, expected: is <true>
[warn] Test assumption in test scala.tools.refactoring.tests.analysis.DeclarationIndexTest.referencesToLazyVal211 failed: org.junit.internal.AssumptionViolatedException: got: <false>, expected: is <true>
[error] Test scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest.missingSuperclass failed: java.util.NoSuchElementException: key not found: file424373220_0
[error]     at scala.collection.MapLike$class.default(MapLike.scala:228)
[error]     at scala.collection.AbstractMap.default(Map.scala:58)
[error]     at scala.collection.MapLike$class.apply(MapLike.scala:141)
[error]     at scala.tools.nsc.interactive.Global$$anon$4.scala$collection$mutable$SynchronizedMap$$super$apply(Global.scala:80)
[error]     at scala.collection.mutable.SynchronizedMap$class.apply(SynchronizedMap.scala:48)
[error]     at scala.tools.nsc.interactive.Global$$anon$4.apply(Global.scala:80)
[error]     at scala.tools.refactoring.tests.util.TestHelper$$anonfun$7.apply(TestHelper.scala:97)
[error]     at scala.tools.refactoring.tests.util.TestHelper$$anonfun$7.apply(TestHelper.scala:97)
[error]     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
[error]     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
[error]     at scala.collection.immutable.List.foreach(List.scala:318)
[error]     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
[error]     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
[error]     at scala.tools.refactoring.tests.util.TestHelper$class.selection(TestHelper.scala:97)
[error]     at scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest.selection(OrganizeMissingImportsTest.scala:14)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl$$anonfun$preparationResult$1.apply(TestRefactoring.scala:46)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl$$anonfun$preparationResult$1.apply(TestRefactoring.scala:45)
[error]     at scala.tools.nsc.interactive.CompilerControl$class.ask(CompilerControl.scala:271)
[error]     at scala.tools.nsc.interactive.Global.ask(Global.scala:28)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl.preparationResult(TestRefactoring.scala:45)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl$$anonfun$performRefactoring$1.apply(TestRefactoring.scala:50)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl$$anonfun$performRefactoring$1.apply(TestRefactoring.scala:49)
[error]     at scala.tools.nsc.interactive.CompilerControl$class.ask(CompilerControl.scala:271)
[error]     at scala.tools.nsc.interactive.Global.ask(Global.scala:28)
[error]     at scala.tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl.performRefactoring(TestRefactoring.scala:49)
[error]     at scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest$$anon$2.<init>(OrganizeMissingImportsTest.scala:21)
[error]     at scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest.organize(OrganizeMissingImportsTest.scala:17)
[error]     at scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest$$anonfun$missingSuperclass$1.apply(OrganizeMissingImportsTest.scala:106)
[error]     at scala.tools.refactoring.tests.implementations.imports.OrganizeMissingImportsTest$$anonfun$missingSuperclass$1.apply(OrganizeMissingImportsTest.scala:106)
[error]     at scala.tools.refactoring.tests.util.TestHelper$FileSet$$anonfun$2.apply(TestHelper.scala:61)
[error]     at scala.tools.refactoring.tests.util.TestHelper$FileSet$$anonfun$2.apply(TestHelper.scala:60)
[error]     at scala.tools.nsc.util.InterruptReq.execute(InterruptReq.scala:26)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:340)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)
[error]     at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:345)

published jars

ensime seems to depend on unmanaged versions of this project, I presume because you are not publishing on maven.org.

Do you have any plans to release official jars?

Filename too long

Hi there!
Recently I tried to compile the scala-refactoring lib and got an 'Filename too long error' on 'org.scala-refactoring.library/src/test/scala/scala/tools/refactoring/tests/util/TestRefactoring.scala'. Do I have to change my Compiler Settings or is there a workaround for it?

Many Thanks in Adavnce
fishfacegit

--------------------------------------Compiler Description------------------------------------------------------

while compiling: /home/hadrian/scala-refactoring/org.scala-refactoring.library/src/test/scala/scala/tools/refactoring/tests/util/TestRefactoring.scala during phase: jvm library version: version 2.10.1 compiler version: version 2.10.1 reconstructed args: -Xpluginsdir /home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/232/1/.cp/lib -classpath /usr/lib/jvm/java-7-openjdk-common/jre/lib/resources.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rhino.jar:/usr/share/java/java-atk-wrapper.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/pulse-java.jar:/usr/lib/jvm/java-7-openjdk-common/jre/lib/ext/zipfs.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/233/1/.cp/lib/scala-swing.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/233/1/.cp/lib/scala-actors.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/232/1/.cp/lib/scala-reflect.jar:/usr/share/java/junit4-4.10.jar:/usr/share/java/hamcrest-core-1.2.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.scala-ide.scala.library_2.10.1.v20130302-092018-VFINAL-33e32179fd.jar:/home/hadrian/refac/.metadata/.plugins/org.eclipse.pde.core/.external_libraries/org.scala-ide.scala.library_2.10.1.v20130302-092018-VFINAL-33e32179fd/lib/scala-swing.jar:/home/hadrian/refac/.metadata/.plugins/org.eclipse.pde.core/.external_libraries/org.scala-ide.scala.library_2.10.1.v20130302-092018-VFINAL-33e32179fd/lib/scala-actors.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.scala-ide.scala.compiler_2.10.1.v20130302-092018-VFINAL-33e32179fd.jar:/home/hadrian/refac/.metadata/.plugins/org.eclipse.pde.core/.external_libraries/org.scala-ide.scala.compiler_2.10.1.v20130302-092018-VFINAL-33e32179fd/lib/scala-compiler.jar:/home/hadrian/refac/.metadata/.plugins/org.eclipse.pde.core/.external_libraries/org.scala-ide.scala.compiler_2.10.1.v20130302-092018-VFINAL-33e32179fd/lib/scala-reflect.jar:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/232/1/.cp/lib/scala-compiler.jar -bootclasspath /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/netx.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/plugin.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rhino.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/classes:/home/hadrian/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/233/1/.cp/lib/scala-library.jar last tree to typer: Literal(Constant(())) symbol: null symbol definition: null tpe: Unit symbol owners: context owners: class TestRefactoring$TestRefactoringImpl -> package util == Enclosing template or block == Template( // val : in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.tests.util.TestRefactoring$TestRefactoringImpl "java.lang.Object" // parents ValDef( private "_" ) // 7 statements ValDef( // val project: tools.refactoring.tests.util.TestHelper$FileSet in class TestRefactoring$TestRefactoringImpl private "project" // tree.tpe=tools.refactoring.tests.util.TestHelper$FileSet ) DefDef( // val refactoring(): tools.refactoring.MultiStageRefactoring in class TestRefactoring$TestRefactoringImpl "refactoring" [] List(Nil) // tree.tpe=tools.refactoring.MultiStageRefactoring ) DefDef( // def preparationResult(): util.Either in class TestRefactoring$TestRefactoringImpl "preparationResult" [] List(Nil) // tree.tpe=util.Either Apply( // def prepare(s: tools.refactoring.common.Selections$Selection): util.Either in class MultiStageRefactoring, tree.tpe=util.Either TestRefactoring$TestRefactoringImpl.this.refactoring()."prepare" // def prepare(s: tools.refactoring.common.Selections$Selection): util.Either in class MultiStageRefactoring, tree.tpe=(s: tools.refactoring.common.Selections$Selection)util.Either Apply( // def selection(refactoring: tools.refactoring.common.Selections,project: tools.refactoring.tests.util.TestHelper$FileSet): tools.refactoring.common.Selections$Selection in trait TestHelper, tree.tpe=tools.refactoring.common.Selections$Selection TestRefactoring$TestRefactoringImpl.this.scala$tools$refactoring$tests$util$TestRefactoring$TestRefactoringImpl$$$outer()."selection" // def selection(refactoring: tools.refactoring.common.Selections,project: tools.refactoring.tests.util.TestHelper$FileSet): tools.refactoring.common.Selections$Selection in trait TestHelper, tree.tpe=(refactoring: tools.refactoring.common.Selections, project: tools.refactoring.tests.util.TestHelper$FileSet)tools.refactoring.common.Selections$Selection // 2 arguments Apply( // val refactoring(): tools.refactoring.MultiStageRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.MultiStageRefactoring TestRefactoring$TestRefactoringImpl.this."refactoring" // val refactoring(): tools.refactoring.MultiStageRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=()tools.refactoring.MultiStageRefactoring Nil ) TestRefactoring$TestRefactoringImpl.this."project" // val project: tools.refactoring.tests.util.TestHelper$FileSet in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.tests.util.TestHelper$FileSet ) ) ) DefDef( // def performRefactoring(parameters: Object): List in class TestRefactoring$TestRefactoringImpl "performRefactoring" [] // 1 parameter list ValDef( // parameters: Object "parameters" // tree.tpe=Object ) // tree.tpe=List Block( // tree.tpe=List // 4 statements ValDef( // case val x1: util.Either case "x1" // tree.tpe=util.Either Apply( // def preparationResult(): util.Either in class TestRefactoring$TestRefactoringImpl, tree.tpe=util.Either TestRefactoring$TestRefactoringImpl.this."preparationResult" // def preparationResult(): util.Either in class TestRefactoring$TestRefactoringImpl, tree.tpe=()util.Either Nil ) ) LabelDef( // case def case6(): List, tree.tpe=List () If( // tree.tpe=List Apply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=Boolean TypeApply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=()Boolean "x1"."$isInstanceOf" // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=T0 >: ? <: ?Boolean // tree.tpe=util.Right ) Nil ) Block( // tree.tpe=List ValDef( // val x2: util.Right "x2" // tree.tpe=util.Right Typed( // tree.tpe=util.Right Apply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=util.Right TypeApply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=()util.Right "x1"."$asInstanceOf" // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=T0 >: ? <: ?T0 // tree.tpe=util.Right ) Nil ) // tree.tpe=util.Right ) ) Block( // tree.tpe=List ValDef( // val prepare: Object "prepare" // tree.tpe=Object Apply( // val b(): Object in class Right, tree.tpe=Object "x2"."b" // val b(): Object in class Right, tree.tpe=()Object Nil ) ) Apply( // case def matchEnd5(x: List): List, tree.tpe=List "matchEnd5" // case def matchEnd5(x: List): List, tree.tpe=(x: List)List Block( // tree.tpe=List // 4 statements ValDef( // case val x1: util.Either case "x1" // tree.tpe=util.Either Apply( // def perform(selection: tools.refactoring.common.Selections$Selection,prepared: Object,params: Object): util.Either in class MultiStageRefactoring, tree.tpe=util.Either TestRefactoring$TestRefactoringImpl.this.refactoring()."perform" // def perform(selection: tools.refactoring.common.Selections$Selection,prepared: Object,params: Object): util.Either in class MultiStageRefactoring, tree.tpe=(selection: tools.refactoring.common.Selections$Selection, prepared: Object, params: Object)util.Either // 3 arguments Apply( // def selection(refactoring: tools.refactoring.common.Selections,project: tools.refactoring.tests.util.TestHelper$FileSet): tools.refactoring.common.Selections$Selection in trait TestHelper, tree.tpe=tools.refactoring.common.Selections$Selection TestRefactoring$TestRefactoringImpl.this.scala$tools$refactoring$tests$util$TestRefactoring$TestRefactoringImpl$$$outer()."selection" // def selection(refactoring: tools.refactoring.common.Selections,project: tools.refactoring.tests.util.TestHelper$FileSet): tools.refactoring.common.Selections$Selection in trait TestHelper, tree.tpe=(refactoring: tools.refactoring.common.Selections, project: tools.refactoring.tests.util.TestHelper$FileSet)tools.refactoring.common.Selections$Selection // 2 arguments Apply( // val refactoring(): tools.refactoring.MultiStageRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.MultiStageRefactoring TestRefactoring$TestRefactoringImpl.this."refactoring" // val refactoring(): tools.refactoring.MultiStageRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=()tools.refactoring.MultiStageRefactoring Nil ) TestRefactoring$TestRefactoringImpl.this."project" // val project: tools.refactoring.tests.util.TestHelper$FileSet in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.tests.util.TestHelper$FileSet ) "prepare" // val prepare: Object, tree.tpe=Object "parameters" // parameters: Object, tree.tpe=Object ) ) LabelDef( // case def case6(): List, tree.tpe=List () If( // tree.tpe=List Apply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=Boolean TypeApply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=()Boolean "x1"."$isInstanceOf" // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=T0 >: ? <: ?Boolean // tree.tpe=util.Right ) Nil ) Block( // tree.tpe=List ValDef( // val x2: util.Right "x2" // tree.tpe=util.Right Typed( // tree.tpe=util.Right Apply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=util.Right TypeApply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=()util.Right "x1"."$asInstanceOf" // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=T0 >: ? <: ?T0 // tree.tpe=util.Right ) Nil ) // tree.tpe=util.Right ) ) Block( // tree.tpe=List ValDef( // val modifications: List "modifications" // tree.tpe=List Apply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=List TypeApply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=()List x2.b()."$asInstanceOf" // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=T0 >: ? <: ?T0 // tree.tpe=List ) Nil ) ) Apply( // case def matchEnd5(x: List): List, tree.tpe=List "matchEnd5" // case def matchEnd5(x: List): List, tree.tpe=(x: List)List "modifications" // val modifications: List, tree.tpe=List ) ) ) Apply( // case def case7(): List, tree.tpe=List "case7" // case def case7(): List, tree.tpe=()List Nil ) ) ) LabelDef( // case def case7(): List, tree.tpe=List () If( // tree.tpe=List Apply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=Boolean TypeApply( // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=()Boolean "x1"."$isInstanceOf" // final def $isInstanceOfT0 >: ? <: ?: Boolean in class Object, tree.tpe=T0 >: ? <: ?Boolean // tree.tpe=util.Left ) Nil ) Block( // tree.tpe=List ValDef( // val x3: util.Left "x3" // tree.tpe=util.Left Typed( // tree.tpe=util.Left Apply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=util.Left TypeApply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=()util.Left "x1"."$asInstanceOf" // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=T0 >: ? <: ?T0 // tree.tpe=util.Left ) Nil ) // tree.tpe=util.Left ) ) Block( // tree.tpe=List ValDef( // val error: tools.refactoring.MultiStageRefactoring$RefactoringError "error" // tree.tpe=tools.refactoring.MultiStageRefactoring$RefactoringError Apply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=tools.refactoring.MultiStageRefactoring$RefactoringError TypeApply( // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=()tools.refactoring.MultiStageRefactoring$RefactoringError x3.a()."$asInstanceOf" // final def $asInstanceOfT0 >: ? <: ?: T0 in class Object, tree.tpe=T0 >: ? <: ?T0 // tree.tpe=tools.refactoring.MultiStageRefactoring$RefactoringError ) Nil ) ) Apply( // case def matchEnd5(x: List): List, tree.tpe=List "matchEnd5" // case def matchEnd5(x: List): List, tree.tpe=(x: List)List Throw( // tree.tpe=Nothing Apply( // def (arg$outer: tools.refactoring.tests.util.TestRefactoring,cause: String): tools.refactoring.tests.util.TestRefactoring$RefactoringException in class TestRefactoring$RefactoringException, tree.tpe=tools.refactoring.tests.util.TestRefactoring$RefactoringException new tools.refactoring.tests.util.TestRefactoring$RefactoringException."" // def (arg$outer: tools.refactoring.tests.util.TestRefactoring,cause: String): tools.refactoring.tests.util.TestRefactoring$RefactoringException in class TestRefactoring$RefactoringException, tree.tpe=(arg$outer: tools.refactoring.tests.util.TestRefactoring, cause: String)tools.refactoring.tests.util.TestRefactoring$RefactoringException // 2 arguments Apply( // val $outer(): tools.refactoring.tests.util.TestRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=tools.refactoring.tests.util.TestRefactoring TestRefactoring$TestRefactoringImpl.this."scala$tools$refactoring$tests$util$TestRefactoring$TestRefactoringImpl$$$outer" // val $outer(): tools.refactoring.tests.util.TestRefactoring in class TestRefactoring$TestRefactoringImpl, tree.tpe=()tools.refactoring.tests.util.TestRefactoring Nil ) Apply( // val cause(): String in class MultiStageRefactoring$RefactoringError, tree.tpe=String "error"."cause" // val cause(): String in class MultiStageRefactoring$RefactoringError, tree.tpe=()String Nil ) ) ) ) ) ) Apply( // case def case8(): List, tree.tpe=List "case8" // case def case8(): List, tree.tpe=()List Nil ) ) ) LabelDef( // case def case8(): List, tree.tpe=List () Apply( // case def matchEnd5(x: List): List, tree.tpe=List "matchEnd5" // case def matchEnd5(x: List): List, tree.tpe=(x: List)List Throw( // tree.tpe=Nothing Apply( // def (obj: Object): MatchError in class MatchError, tree.tpe=MatchError new MatchError."" // def (obj: Object): MatchError in class MatchError, tree.tpe=(obj: Object)MatchError "x1" // case val x1: util.Either, tree.tpe=util.Either ) ) ) ) LabelDef( // case def matchEnd5(x: List): List, tree.tpe=List "x" // x: List, tree.tpe=List "x" // x: List, tree.tpe=List ) ) ) ) ) Apply( // case def case7(): List, tree.tpe=List "case7" // ca

--------------------------------------Compiler Description------------------------------------------------------

the big refactor plan for the refactoring

@mlangc @xeno-by @smarter @sschaef @dragos @rorygraves (please add more as I don't know all handles)

Just to summarise what we discussed.

  1. a lot of refactorings currently don't work. We are happy for the next release to remove all but: "rename", "organize [sic] imports" and "move class"
  2. the scalac Tree API desugars the Trees such that printing the refactored trees is not an option. We are proposing to use the presentation compiler to produce the Tree diff, but then interpret the diff in a sugar-preserving Concrete Syntax Tree, such as the one produced by scala.meta (but we could also investigate using scalariform or https://github.com/lihaoyi/fastparse or bribe @sirthias with lots of beer to write it in parboiled2). Aka the "libre monad".

Rename a function id with multi-line parentheses

Rename a function id followed by multi-line parentheses produces a wrong result.

    package test

    trait Bug {
      def /*(*/renameMe/*)*/(
    ) = 1
    }
    package test

    trait Bug {
      def /*(*/Ups/*)*/(
     = 1
    }
  @Test
  def testRenameMultiLineParentheses() = new FileSet {
    """
    package test

    trait Bug {
      def /*(*/renameMe/*)*/(
    ) = 1
    }
    """ becomes
    """
    package test

    trait Bug {
      def /*(*/Ups/*)*/(
    ) = 1
    }
    """ -> TaggedAsGlobalRename;
  } prepareAndApplyRefactoring(prepareAndRenameTo("Ups"))

RFE: add import

in ensime we currently expect the clients to handle the adding of an import, but it would be really ace if scala-refactoring could do it in such a way that matches with (best efforts) the ordering rules.

organise imports removes imports of annotations used in macro annotations

two examples: simulacrum and stalactite.

Both of these library provide scala-macro paradise powered macro annotations. The macro annotation processor strips the annotations, so organise imports cannot see them.

I think it would be good to have the ability to have a list of special annotations that should not be stripped, unless there is a way to fix this properly.

scala-refactoring asks for my gpg passphrase when building locally

Building with the command :

 ./build-all.sh -e -X -P scala-2.10.x clean install       

I get :

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-gpg-plugin:1.4:sign (sign-artifacts) @ org.scala-refactoring ---
[DEBUG] org.apache.maven.plugins:maven-gpg-plugin:jar:1.4:
[DEBUG]    org.apache.maven:maven-plugin-api:jar:2.0.6:compile
[DEBUG]    org.apache.maven:maven-project:jar:2.0.6:compile
[DEBUG]       org.apache.maven:maven-settings:jar:2.0.6:compile
[DEBUG]       org.apache.maven:maven-profile:jar:2.0.6:compile
[DEBUG]       org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
[DEBUG]          org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
[DEBUG]       org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
[DEBUG]    org.apache.maven:maven-artifact:jar:2.0.6:compile
[DEBUG]    org.apache.maven:maven-model:jar:2.0.6:compile
[DEBUG]    org.codehaus.plexus:plexus-utils:jar:2.0.5:compile
[DEBUG] Created new class realm plugin>org.apache.maven.plugins:maven-gpg-plugin:1.4
[DEBUG] Importing foreign packages into class realm plugin>org.apache.maven.plugins:maven-gpg-plugin:1.4
[DEBUG]   Imported:  < project>org.scala-refactoring:org.scala-refactoring:0.6.1-SNAPSHOT
[DEBUG] Populating class realm plugin>org.apache.maven.plugins:maven-gpg-plugin:1.4
[DEBUG]   Included: org.apache.maven.plugins:maven-gpg-plugin:jar:1.4
[DEBUG]   Included: org.codehaus.plexus:plexus-utils:jar:2.0.5
[DEBUG]   Excluded: org.apache.maven:maven-plugin-api:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-project:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-settings:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-profile:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-artifact-manager:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-repository-metadata:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-plugin-registry:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-artifact:jar:2.0.6
[DEBUG]   Excluded: org.apache.maven:maven-model:jar:2.0.6
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-gpg-plugin:1.4:sign from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-gpg-plugin:1.4, parent: sun.misc.Launcher$AppClassLoader@6d6f0472]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-gpg-plugin:1.4:sign' with basic configurator -->
[DEBUG]   (f) ascDirectory = /home/huitseeker/Scala/scala-refactoring/target/gpg
[DEBUG]   (f) defaultKeyring = true
[DEBUG]   (f) interactive = true
[DEBUG]   (f) project = MavenProject: org.scala-refactoring:org.scala-refactoring:0.6.1-SNAPSHOT @ /home/huitseeker/Scala/scala-refactoring/pom.xml
[DEBUG]   (f) skip = false
[DEBUG]   (f) useAgent = false
[DEBUG] -- end configuration --
[DEBUG] Extension realms for project org.sonatype.oss:oss-parent:pom:7: (none)
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null]
GPG Passphrase:

This is because, IIUC, maven includes the gpg plugin as a top plugin, which makes it sign artifacts from scala-refactoring by default. Please wrap the plugin configuration in a profile, so that only specific profiles require the signature. Default, local publishing shouldn't be signed, if only because it hinders automation. See the related flamewar re: requiring signatures on publish-local for sbt.

Explicit typing feature

I'm currently working on implementing an explicit typing feature.

https://www.reddit.com/r/scala/comments/4mwp0o/scalatype_need_help/

Basically the idea is that it adds explicit types to variable declarations to make code easier to maintain after it has been written.

I was wondering if there was any way we could integrate functionality. Right now I'm getting my type information by telling my command line utility to compile with -print. This generates desugared source code with type information that can be extracted (using regular expression).

Add option for spaces around braces

Currently there's disagreement between scalariform and refactoring w.r.t. to imports. Organize imports always rewrites them like this:

import org.foo.{Foo, Bar}

but if I reformat the code, it changes to

import org.foo.{ Foo, Bar }

It would be nice to have an option, so we can make the two agree (and not rewrite uselessly).

2.9.3 release please

sorry about this. We want the scala-2.9 branch of ensime to support the latest scala stables and we've upgraded to 2.9.3.

Unfortunately, scala-refactoring is only released for 2.9.2 (not generically for _2.9) and that means we need to hard code the scala version in our build dependencies.

Could you please make a 2.9 or 2.9.3 release? (for the same version of your 2.9.2 release)

Refactoring with scalajs-react

Hi,

Using Scala Refactoring 0.9.1.2_11-201603041823 (Scala IDE 4.4.0-RC1) I get an error while trying to organize imports when using scalajs-react.

import japgolly.scalajs.react._
import japgolly.scalajs.react.vdom.prefix_<^._

object Footer {

  val component = ReactComponentB.static("Footer",
    <.footer(^.textAlign.center,
    <.div(^.borderBottom := "1px solid grey", ^.padding := "0px"),
    <.p(^.paddingTop := "5px", "Humans, welcome!")
    )
  ).buildU

  def apply() = component()
}

Refactors to:

import japgolly.scalajs.react.ReactComponentB
import japgolly.scalajs.react.reactNodeInhabitableS
import japgolly.scalajs.react.vdom.prefix_<^.{ ^ => ^ }
import japgolly.scalajs.react.vdom.prefix_<^._react_autoRender
import japgolly.scalajs.react.vdom.prefix_<^._react_fragReactNode
import japgolly.scalajs.react.vdom.prefix_<^._react_styleString

object Footer {

  val component = ReactComponentB.static("Footer",
    <.footer(^.textAlign.center,
    <.div(^.borderBottom := "1px solid grey", ^.padding := "0px"),
    <.p(^.paddingTop := "5px", "Humans, welcome!")
    )
  ).buildU

  def apply() = component()
}

Thus generating an error (value < not found) on these lines:

<.footer(^.textAlign.center,
    <.div(^.borderBottom := "1px solid grey", ^.padding := "0px"),
    <.p(^.paddingTop := "5px", "Humans, welcome!")

Not sure this is fixable but I thought I'd let you know. Keep the good work!

recent 2.9 release

Hi, I was hoping you could help to debug a stacktrace we're seeing in Ensime when trying to perform rename refactorings and "search for uses of symbol" style queries:

https://github.com/ensime/ensime-src/issues/359

We recently updated from a self-bundled snapshot of your jars (circa org.scala-refactoring_2.10.0-SNAPSHOT-0.6.1-20130201.063851-55.jar) to use your published versions (0.6.2-SNAPSHOT), I suspect that may have been the cause of this as I can only assume it was working beforehand:

https://github.com/ensime/ensime-src/commit/0319dd1e69f7e9b970000edcd0aa6ebbe9713bf3#diff-215113124f1de02f228327ba7abb45f7

support catch-all organise import group

IntelliJ seems to encourage imports in this order

import java....

import scala...

import ... everything else...

import com.my.app...

which sadly cannot be met by scala-refactoring's config.

It would be good if perhaps we allowed * as a magic marker for this, so the user could use this config: ["java", "scala", "*", "com.my.app"]

Release a stable version for Scala 2.10 final

I'm currently doing this:

"org.scala-refactoring" % "org.scala-refactoring_2.10.0-SNAPSHOT" % "0.6.1-SNAPSHOT" from "https://oss.sonatype.org/content/repositories/snapshots/org/scala-refactoring/org.scala-refactoring_2.10.0-SNAPSHOT/0.6.1-SNAPSHOT/org.scala-refactoring_2.10.0-SNAPSHOT-0.6.1-20130206.063903-60.jar"

which is somewhat ugly. Also, why the -SNAPSHOT in the Scala 2.10 version (which is released since a while)?

Perhaps the 0.6.0 could be published as stable version against Scala 2.10 to Maven Central? Thx

How to publish a Scala 2.11.0-RC1 version of the refactoring library

I tried this, skipping the root directory maven stuff and going directly into the library project and sbt:

Sciss@95c21f6

What is the plan for Scala 2.11. Currently artifacts are not versioned against the Scala library/compiler version. Will 0.6.2 be released for Scala 2.11?

In the meantime, using maven or sbt, what would be the best approach to publish a local version of the library against Scala 2.11.0-RC1? Or did you do that already somewhere?

Thanks!

Extract local from interpolated String

Extract local from an expression inside an interpolated string currently mangles the source code.

An example:

val i = s"example string ${5+5}"

Extracting the expression 5+5 to the val extracted results in:

val extracted = 5+5
val i = extracted}"

Replace more than N imports from same package by wildcard import

I'm interested in implementing a refactoring that allows to change individual imports from a single package by a wildcard. Twitter's 'Effective Scala' for example suggests to do this when there are more than six imports from a given package.

I see the need to make exceptions for certain packages that would export too much. I think that can be handled similarly to the "always use wildcard imports when importing from these packages" feature in Scala IDE.

More problematic however is that changing imports to a wildcard might break compilation, if it causes duplicate names being imported. I think the easiest solution to that is to just not perform the operation if that happens. Is that feasible and can you from the top of your head recommend a strategy on how to this?

Work will start tomorrow evening during the first Amsterdam Scala Hackathon!

Update our README

Our README is currently out of date and not very contributor friendly. It should mention

  • that most refactoring are currently unmaintained and are waiting for contributors
  • that we use SBT and not Maven
  • some tips for new contributors

Delete trailing whitespace in whole project

This commit contains 4262 loc change, only whitespace related: kiritsuku@ba8c68a

Do you have an interest in removing trailing whitespace from the scala-refactoring? I can't work with enabled save actions on the code base, the loc change is immense. Opening PRs on such a code base needs a lot of time if it should be ensured that the commits are not polluted with whitespace changes.

I introduced Scalastyle into the Scala IDE and it works quite well so far without all that whitespace crap. Scalastyle ensures a clean code base - if you have an interest that it watches scala-refactoring as well, I would give it a try.

Another problem are tests that rely on whitespace, it would a pleasure for me to look into that as well, update the test suites to work with trailing whitespaces if they are needed and to update the refactoring logic in so far that it doesn't introduce whitespace in blank lines.

Just an idea - if you don't like it feel free to close the issue.

Broken build?

From SBT prompt, launched inside latest master (30fd14d)

> ++ 2.11.8
[info] Setting version to 2.11.8
[info] Reapplying settings...
[info] Set current project to org.scala-refactoring.library (in build file:/D:/_Home/eclipse-workspaces/workspace-FS/scala-refactoring-master/)
> package
[info] Updating {file:/D:/_Home/eclipse-workspaces/workspace-FS/scala-refactoring-master/}scala-refactoring-master...
[info] Resolving org.scala-lang#scala-library;2.11.8 ...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 94 Scala sources and 1 Java source to D:\_Home\eclipse-workspaces\workspace-FS\scala-refactoring-master\target\scala-2.11\classes...
[info] 'compiler-interface' not yet compiled for Scala 2.11.8. Compiling...
[info]   Compilation completed in 9.94 s
[trace] Stack trace suppressed: run last compile:packageBin for the full output.
[error] (compile:packageBin::packageOptions) Nonzero exit value: 128
[error] Total time: 48 s, completed 28.02.2017 4:21:36
> last compile:packageBin
java.lang.RuntimeException: Nonzero exit value: 128
        at scala.sys.package$.error(package.scala:27)
        at sbt.AbstractProcessBuilder.getString(ProcessImpl.scala:134)
        at sbt.AbstractProcessBuilder.$bang$bang(ProcessImpl.scala:136)
        at $3324acd55f2016653e59$$anonfun$$sbtdef$1$$anonfun$1.apply(D:\_Home\eclipse-workspaces\workspace-FS\scala-refactoring-master\build.sbt:108)
        at $3324acd55f2016653e59$$anonfun$$sbtdef$1$$anonfun$1.apply(D:\_Home\eclipse-workspaces\workspace-FS\scala-refactoring-master\build.sbt:102)
        at sbt.Using.apply(Using.scala:24)
        at $3324acd55f2016653e59$$anonfun$$sbtdef$1.apply(D:\_Home\eclipse-workspaces\workspace-FS\scala-refactoring-master\build.sbt:102)
        at $3324acd55f2016653e59$$anonfun$$sbtdef$1.apply(D:\_Home\eclipse-workspaces\workspace-FS\scala-refactoring-master\build.sbt:101)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
[error] (compile:packageBin::packageOptions) Nonzero exit value: 128
>

Race condition in TreeTransformers

Log here.

allEmpty(scala.tools.refactoring.tests.transformation.TreeTransformationsTest)  Time elapsed: 0.015 sec  <<< FAILURE!
java.lang.AssertionError: assertion failed: Race condition detected: You are running a presentation compiler method outside the PC thread.[phase: <no phase>] Please file a ticket with the current stack trace at https://www.assembla.com/spaces/scala-ide/support/tickets
    at scala.tools.nsc.interactive.Global.assertCorrectThread(Global.scala:501)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1390)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1331)
    at scala.reflect.internal.Symbols$Symbol.tpeHK(Symbols.scala:1255)
    at scala.reflect.internal.Types$Type.computeMemberType(Types.scala:702)
    at scala.reflect.internal.Types$Type.memberType(Types.scala:699)
    at scala.reflect.internal.Types$class.defineUnderlyingOfSingleType(Types.scala:1418)
    at scala.reflect.internal.SymbolTable.defineUnderlyingOfSingleType(SymbolTable.scala:14)
    at scala.reflect.internal.Types$SingleType.underlying(Types.scala:1370)
    at scala.reflect.internal.Types$SimpleTypeProxy$class.isError(Types.scala:147)
    at scala.reflect.internal.Types$SingletonType.isError(Types.scala:1227)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1$TransformOnce$2$.once(TreeTransformations.scala:62)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1.apply(TreeTransformations.scala:69)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1.apply(TreeTransformations.scala:16)
    at scala.tools.refactoring.transformation.Transformations$$anon$4.apply(Transformations.scala:115)
    at scala.tools.refactoring.transformation.Transformations$$anon$4.apply(Transformations.scala:113)
    at scala.Option.flatMap(Option.scala:170)
    at scala.tools.refactoring.transformation.Transformations$Transformation$$anon$7.apply(Transformations.scala:38)
    at scala.tools.refactoring.transformation.Transformations$$anon$4$$anonfun$apply$2.apply(Transformations.scala:115)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1$TransformOnce$2$.transform(TreeTransformations.scala:66)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1$TransformOnce$2$.transform(TreeTransformations.scala:22)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1359)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:14)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:14)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2624)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1$TransformOnce$2$.once(TreeTransformations.scala:64)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1.apply(TreeTransformations.scala:69)
    at scala.tools.refactoring.transformation.TreeTransformations$$anonfun$treesToTraversalFunction$1.apply(TreeTransformations.scala:16)
    at scala.tools.refactoring.transformation.Transformations$$anon$4.apply(Transformations.scala:115)
    at scala.tools.refactoring.transformation.Transformations$$anon$4.apply(Transformations.scala:113)
    at scala.Option.flatMap(Option.scala:170)
    at scala.tools.refactoring.transformation.Transformations$Transformation$$anon$7.apply(Transformations.scala:38)
    at scala.tools.refactoring.transformation.Transformations$Transformation$$anon$7.apply(Transformations.scala:38)
    at scala.tools.refactoring.tests.transformation.TreeTransformationsTest.allEmpty(TreeTransformationsTest.scala:58)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.