Skip to content

Commit

Permalink
Add support for never type (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
TATSUNO Yasuhiro authored and sjrd committed Oct 9, 2017
1 parent 9a35581 commit 308db20
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 1 deletion.
11 changes: 11 additions & 0 deletions samples/never.ts
@@ -0,0 +1,11 @@
declare module nevertype {

export class RangeQuery {
never: never;

value(queryVal: string | number): string;

method(foo: never): Array<never>;
}

}
20 changes: 20 additions & 0 deletions samples/never.ts.scala
@@ -0,0 +1,20 @@

import scala.scalajs.js
import js.annotation._
import js.|

package importedjs {

package nevertype {

@js.native
@JSGlobal("nevertype.RangeQuery")
class RangeQuery extends js.Object {
var never: Nothing = js.native
def value(queryVal: String | Double): String = js.native
def method(foo: Nothing): js.Array[Nothing] = js.native
}

}

}
1 change: 1 addition & 0 deletions src/main/scala/org/scalajs/tools/tsimporter/Importer.scala
Expand Up @@ -322,6 +322,7 @@ class Importer(val output: java.io.PrintWriter) {
case "string" => TypeRef.String
case "null" => TypeRef.Null
case "undefined" => TypeRef.Unit
case "never" => TypeRef.Nothing
}
}
}
Expand Down
Expand Up @@ -282,7 +282,7 @@ class TSDefParser extends StdTokenParsers with ImplicitConversions {
stringLit ^^ StringLiteral

private val isCoreTypeName =
Set("any", "void", "number", "bool", "boolean", "string", "null", "undefined")
Set("any", "void", "number", "bool", "boolean", "string", "null", "undefined", "never")

def typeNameToTypeRef(name: String): BaseTypeRef =
if (isCoreTypeName(name)) CoreType(name)
Expand Down
Expand Up @@ -298,6 +298,7 @@ object TypeRef {
val Function = TypeRef(scala_js dot Name("Function"))
val Unit = TypeRef(scala dot Name("Unit"))
val Null = TypeRef(scala dot Name("Null"))
val Nothing = TypeRef(scala dot Name("Nothing"))

object Union {
def apply(types: List[TypeRef]): TypeRef =
Expand Down

0 comments on commit 308db20

Please sign in to comment.