Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't handle List in render? #15

Open
freewind opened this issue Feb 13, 2015 · 3 comments
Open

Can't handle List in render? #15

freewind opened this issue Feb 13, 2015 · 3 comments

Comments

@freewind
Copy link

I have a render which contains a List:

@scalax
  override def render(self: This) = {
    val content = Search(Search.Props(self.onSearch)) :: (self.state.keyword match {
      case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
      case _ => Links(Links.Props(projects))
    }) :: Nil

    <div>
      {content}
    </div>
  }

It will reports error when I run fastOptJS:

6. Waiting for source changes... (press enter to interrupt)
[info] Compiling 1 Scala source to /Users/twer/workspace/wind-links/target/scala-2.11/classes...
[error] /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala:34: ')' expected but $XMLSTART$< found.
[error]     <div>
[error]     ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 0 s, completed Feb 13, 2015 10:56:07 PM
7. Waiting for source changes... (press enter to interrupt)
[info] Compiling 1 Scala source to /Users/twer/workspace/wind-links/target/scala-2.11/classes...
[error]
[error]   no progress in completing object Main: <?>
[error]      while compiling: /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala
[error]         during phase: globalPhase=typer, enteringPhase=namer
[error]      library version: version 2.11.5
[error]     compiler version: version 2.11.5
[error]   reconstructed args: -classpath /Users/twer/workspace/wind-links/target/scala-2.11/classes:/Users/twer/.ivy2/cache/org.scala-js/scalajs-library_2.11/jars/scalajs-library_2.11-0.6.0.jar:/Users/twer/.ivy2/cache/com.xored.scalajs/scalajs-react_sjs0.6_2.11/jars/scalajs-react_sjs0.6_2.11-0.3.3.jar:/Users/twer/.ivy2/cache/org.webjars/react/jars/react-0.11.0.jar:/Users/twer/.ivy2/cache/org.scala-js/scalajs-dom_sjs0.6_2.11/jars/scalajs-dom_sjs0.6_2.11-0.7.0.jar:/Users/twer/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.jar:/Users/twer/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.5.jar -Xplugin:/Users/twer/.ivy2/cache/org.scala-js/scalajs-compiler_2.11.5/jars/scalajs-compiler_2.11.5-0.6.0.jar -Xplugin:/Users/twer/.ivy2/cache/org.scalamacros/paradise_2.11.5/jars/paradise_2.11.5-2.0.1.jar -bootclasspath /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/classes:/Users/twer/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.5.jar
[error]
[error]   last tree to typer: Select(Ident(Links), apply$default$2)
[error]        tree position: line 31 of /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala
[error]             tree tpe: [T]=> Any
[error]               symbol: method apply$default$2 in trait ReactSpec
[error]    symbol definition: def apply$default$2[T]: Any @scala.annotation.unchecked.uncheckedVariance (a MethodSymbol)
[error]       symbol package: com.xored.scalajs.react
[error]        symbol owners: method apply$default$2 -> trait ReactSpec
[error]            call site: object Main in package main in package main
[error]
[error] == Source file context for tree position ==
[error]
[error]     28     val content = Search(Search.Props(self.onSearch)) :: (self.state.keyword match {
[error]     29       case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
[error]     30       case _ => Links(Links.Props(projects))
[error]     31     }) :: Nil
[error]     32
[error]     33     <div>
[error]     34       {content}
[error] /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala:27: exception during macro expansion:
[error] scala.reflect.internal.FatalError:
[error]   no progress in completing object Main: <?>
[error]      while compiling: /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala
[error]         during phase: globalPhase=typer, enteringPhase=namer
[error]      library version: version 2.11.5
[error]     compiler version: version 2.11.5
[error]   reconstructed args: -classpath /Users/twer/workspace/wind-links/target/scala-2.11/classes:/Users/twer/.ivy2/cache/org.scala-js/scalajs-library_2.11/jars/scalajs-library_2.11-0.6.0.jar:/Users/twer/.ivy2/cache/com.xored.scalajs/scalajs-react_sjs0.6_2.11/jars/scalajs-react_sjs0.6_2.11-0.3.3.jar:/Users/twer/.ivy2/cache/org.webjars/react/jars/react-0.11.0.jar:/Users/twer/.ivy2/cache/org.scala-js/scalajs-dom_sjs0.6_2.11/jars/scalajs-dom_sjs0.6_2.11-0.7.0.jar:/Users/twer/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.jar:/Users/twer/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.5.jar -Xplugin:/Users/twer/.ivy2/cache/org.scala-js/scalajs-compiler_2.11.5/jars/scalajs-compiler_2.11.5-0.6.0.jar -Xplugin:/Users/twer/.ivy2/cache/org.scalamacros/paradise_2.11.5/jars/paradise_2.11.5-2.0.1.jar -bootclasspath /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/classes:/Users/twer/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.5.jar
[error]
[error]   last tree to typer: Select(Ident(Links), apply$default$2)
[error]        tree position: line 31 of /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala
[error]             tree tpe: [T]=> Any
[error]               symbol: method apply$default$2 in trait ReactSpec
[error]    symbol definition: def apply$default$2[T]: Any @scala.annotation.unchecked.uncheckedVariance (a MethodSymbol)
[error]       symbol package: com.xored.scalajs.react
[error]        symbol owners: method apply$default$2 -> trait ReactSpec
[error]            call site: object Main in package main in package main
[error]
[error] == Source file context for tree position ==
[error]
[error]     28     val content = Search(Search.Props(self.onSearch)) :: (self.state.keyword match {
[error]     29       case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
[error]     30       case _ => Links(Links.Props(projects))
[error]     31     }) :: Nil
[error]     32
[error]     33     <div>
[error]     34       {content}
[error]     at scala.reflect.internal.Reporting$class.abort(Reporting.scala:59)
[error]     at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
[error]     at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1491)
[error]     at scala.reflect.internal.Symbols$Symbol.getterIn(Symbols.scala:2394)
[error]     at scala.reflect.internal.Symbols$Symbol.getter(Symbols.scala:2391)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.widenIfNecessary(Namers.scala:847)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:877)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1381)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.getSig$1(Namers.scala:1532)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1541)
[error]     at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply$mcV$sp(Namers.scala:781)
[error]     at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:780)
[error]     at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:780)
[error]     at scala.tools.nsc.typechecker.Namers$Namer.scala$tools$nsc$typechecker$Namers$Namer$$logAndValidate(Namers.scala:1568)
[error]     at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:780)
[error]     at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:772)
[error]     at scala.tools.nsc.typechecker.Namers$$anon$1.completeImpl(Namers.scala:1684)
[error]     at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter$class.complete(Namers.scala:1692)
[error]     at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:1682)
[error]     at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1483)
[error]     at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1628)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4982)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
[error]     at scala.collection.immutable.List.loop$1(List.scala:173)
[error]     at scala.collection.immutable.List.mapConserve(List.scala:189)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2363)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5294)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5330)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5449)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5455)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedSelectOrSuperCall$1(Typers.scala:4787)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5321)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$95.apply(Typers.scala:4501)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$95.apply(Typers.scala:4501)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:676)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4500)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4555)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5320)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2364)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
[error]     at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5294)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5330)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheckInternal$1$1.apply(Typers.scala:27)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheckInternal$1$1.apply(Typers.scala:27)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:676)
[error]     at scala.reflect.macros.contexts.Typers$class.typecheckInternal$1(Typers.scala:27)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheck$2$$anonfun$apply$1.apply(Typers.scala:28)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheck$2$$anonfun$apply$1.apply(Typers.scala:28)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$3.apply(Typers.scala:24)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$3.apply(Typers.scala:24)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$withContext$1$1.apply(Typers.scala:25)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$withContext$1$1.apply(Typers.scala:25)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$1.apply(Typers.scala:23)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$1.apply(Typers.scala:23)
[error]     at scala.reflect.macros.contexts.Typers$class.withContext$1(Typers.scala:25)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheck$2.apply(Typers.scala:28)
[error]     at scala.reflect.macros.contexts.Typers$$anonfun$typecheck$2.apply(Typers.scala:28)
[error]     at scala.reflect.internal.Trees$class.wrappingIntoTerm(Trees.scala:1698)
[error]     at scala.reflect.internal.SymbolTable.wrappingIntoTerm(SymbolTable.scala:16)
[error]     at scala.reflect.macros.contexts.Typers$class.withWrapping$1(Typers.scala:26)
[error]     at scala.reflect.macros.contexts.Typers$class.typecheck(Typers.scala:28)
[error]     at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
[error]     at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
[error]     at com.xored.scalajs.react.internal.ScalaxHelper$HasType.matches(ScalaxImpl.scala:64)
[error]     at com.xored.scalajs.react.internal.ScalaxHelper$ElemTransformer$.transform(ScalaxImpl.scala:95)
[error]     at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2589)
[error]     at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2587)
[error]     at scala.collection.immutable.List.loop$1(List.scala:173)
[error]     at scala.collection.immutable.List.mapConserve(List.scala:189)
[error]     at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2587)
[error]     at scala.reflect.internal.Trees$class.itransform(Trees.scala:1366)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)
[error]     at com.xored.scalajs.react.internal.ScalaxHelper$ElemTransformer$.transform(ScalaxImpl.scala:130)
[error]     at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1363)
[error]     at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1361)
[error]     at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600)
[error]     at scala.reflect.internal.Trees$class.itransform(Trees.scala:1360)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)
[error]     at com.xored.scalajs.react.internal.ScalaxHelper$ElemTransformer$.transform(ScalaxImpl.scala:130)
[error]     at com.xored.scalajs.react.internal.ScalaxHelper.transform(ScalaxImpl.scala:90)
[error]     at com.xored.scalajs.react.internal.ScalaxImpl$$anonfun$1.apply(ScalaxImpl.scala:33)
[error]     at com.xored.scalajs.react.internal.ScalaxImpl$$anonfun$1.apply(ScalaxImpl.scala:33)
[error]     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
[error]     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
[error]     at scala.collection.immutable.List.foreach(List.scala:381)
[error]     at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
[error]     at scala.collection.immutable.List.map(List.scala:285)
[error]     at com.xored.scalajs.react.internal.ScalaxImpl$.macroTransform(ScalaxImpl.scala:33)
[error]   @scalax
[error]    ^
[error] /Users/twer/workspace/wind-links/src/main/scala/in/freewind/windlinks/main/Main.scala:34: type mismatch;
[error]  found   : scala.xml.Elem
[error]  required: com.xored.scalajs.react.ReactDOM
[error]     <div>
[error]      ^
[error] three errors found
[error] (compile:compile) Compilation failed
[error] Total time: 1 s, completed Feb 13, 2015 10:56:15 PM
8. Waiting for source changes... (press enter to interrupt)

If I use a Seq instead, it will be all OK:

val content = Seq(
  Search(Search.Props(self.onSearch)),
  self.state.keyword match {
    case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
    case _ => Links(Links.Props(projects))
  })

If you need more information, see here: https://github.com/freewind/wind-links/blob/master/src/main/scala/in/freewind/windlinks/main/Main.scala

@kanterov
Copy link
Contributor

List[T] is subtype of Seq[T], scalax macro supports traversing any Seq, so it's not the cause. In your example if you replace Seq.apply with List.apply, it would work.

Something bad is happening with typecheker, for example following code compiles:

  override def render(self: This) = {
    @scalax val render2 = {
      val content = Search(Search.Props(self.onSearch)) :: (self.state.keyword match {
        case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
        case _ => Links(Links.Props(projects))
      }) :: Nil

      <div>
        {content}
      </div>
    }
    render2
  }

By the way you could rewrite this code in following way:

@scalax
def render(self: This) = {
  <div>
    { Search(Search.Props(self.onSearch)) }
    { 
      self.state.keyword match {
        case Some(keyword) => SearchResult(SearchResult.Props(filteredLinks(projects, keyword)))
        case _ => Links(Links.Props(projects))
      }
    }
  </div>
}

I will investigate this compiler crash

@freewind
Copy link
Author

Thanks, I followed the first workaround and it's working well.

I also like the 2nd, but IDEA's scala plugin mess up the style if I press format keyshort.

@kanterov
Copy link
Contributor

There is an option to turn off formatting for XML literals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants