Merge remote branch 'origin/master'

This commit is contained in:
Dmitry Jemerov
2011-05-27 17:46:24 +04:00
40 changed files with 633 additions and 152 deletions
+27
View File
@@ -2,6 +2,9 @@ import java.*
import util.*
import <error>utils</error>.*
import java.io.PrintStream
import java.lang.Comparable as Com
val l : List<in Int> = new ArrayList<Int>()
fun test(l : java.util.List<Int>) {
@@ -22,4 +25,28 @@ fun test(l : java.util.List<Int>) {
Collections.singleton<Int><error>(1.0)</error>
<error>new List<Int></error>
val o = "sdf" <warning>as</warning> Object
try {
// ...
}
catch(e: Exception) {
System.out?.println(e.getMessage())
}
new PrintStream("sdf")
val c : Com<Int>? = null
c : java.lang.Comparable<Int>?
// Collections.sort<Integer>(new ArrayList<Integer>())
new xxx.<error>Class</error>()
}
namespace xxx {
import java.lang.Class;
}
@@ -0,0 +1,66 @@
import java.*
import util.*
import java.io.*
fun takeFirst(expr: StringBuilder): Char {
val c = expr.charAt(0)
expr.deleteCharAt(0)
return c
}
fun evaluateArg(expr: AbstractStringBuilder, numbers: ArrayList<Int>): Int {
if (expr.length() == 0) throw new Exception("Syntax error: Character expected");
val c = takeFirst<error>(expr)</error>
if (c <error>>=</error> '0' && c <error><=</error> '9') {
val n = c - '0'
if (!numbers.contains(n)) throw new Exception("You used incorrect number: " + n)
numbers.remove(n)
return n \
}
throw new Exception("Syntax error: Unrecognized character " + c)
}
fun evaluateAdd(expr: StringBuilder, numbers: ArrayList<Int>): Int {
val lhs = evaluateArg(expr, numbers)
if (expr.length() > 0) {
}
return lhs
}
fun evaluate(expr: StringBuilder, numbers: ArrayList<Int>): Int {
val lhs = evaluateAdd(expr, numbers)
if (expr.length() > 0) {
val c = expr.charAt(0)
expr.deleteCharAt(0)
}
return lhs
}
fun main(args: Array<String>) {
System.out?.println("24 game")
val numbers = new ArrayList<Int>(4)
val rnd = new Random();
val prompt = new StringBuilder()
for(val i in 0..3) {
val n = rnd.nextInt(9) + 1
numbers.add(n)
if (i > 0) prompt.append(" ");
prompt.append(n)
}
System.out?.println("Your numbers: " + prompt)
System.out?.println("Enter your expression:")
val reader = new BufferedReader(new InputStreamReader(System.`in`))
val expr = new StringBuilder(reader.readLine())
try {
val result = evaluate(expr, numbers)
if (result != 24)
System.out?.println("Sorry, that's " + result)
else
System.out?.println("You won!");
}
catch(e: Throwable) {
System.out?.println(e.getMessage())
}
}
+2 -1
View File
@@ -38,6 +38,7 @@ JetFile: AnnotatedExpressions.jet
PsiElement(RBRACKET)(']')
PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
+16 -8
View File
@@ -385,28 +385,33 @@ JetFile: Labels.jet
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(LT)('<')
TYPE_REFERENCE
USER_TYPE
@@ -415,7 +420,8 @@ JetFile: Labels.jet
PsiElement(GT)('>')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
@@ -427,7 +433,8 @@ JetFile: Labels.jet
PsiElement(GT)('>')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
@@ -439,7 +446,8 @@ JetFile: Labels.jet
PsiElement(GT)('>')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
+2 -1
View File
@@ -768,7 +768,8 @@ JetFile: Properties.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('size')
+4 -2
View File
@@ -261,7 +261,8 @@ JetFile: SimpleExpressions.jet
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_PARAMETER
@@ -277,7 +278,8 @@ JetFile: SimpleExpressions.jet
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(LT)('<')
TYPE_REFERENCE
USER_TYPE
+10 -5
View File
@@ -180,7 +180,8 @@ JetFile: BinaryTree.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('compare')
@@ -286,7 +287,8 @@ JetFile: BinaryTree.jet
PsiElement(LPAR)('(')
VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
VALUE_ARGUMENT
@@ -1897,7 +1899,8 @@ JetFile: BinaryTree.jet
PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('version')
@@ -2475,7 +2478,8 @@ JetFile: BinaryTree.jet
PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('version')
@@ -2520,7 +2524,8 @@ JetFile: BinaryTree.jet
PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('version')
+2 -1
View File
@@ -499,7 +499,8 @@ JetFile: BitArith.jet
BINARY_EXPRESSION
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('and')
@@ -363,7 +363,8 @@ JetFile: PolymorphicClassObjects.jet
PsiWhiteSpace(' ')
LOOP_RANGE
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BODY
+2 -1
View File
@@ -388,7 +388,8 @@ JetFile: UnionFind.jet
BINARY_EXPRESSION
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(PERC)('%')
@@ -350,7 +350,8 @@ JetFile: ArrayList.jet
PsiElement(IDENTIFIER)('ArrayList')
PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
@@ -44,7 +44,8 @@ JetFile: HashMap.jet
PsiElement(LPAR)('(')
BINARY_WITH_TYPE
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as)('as')
@@ -138,7 +139,8 @@ JetFile: HashMap.jet
PsiElement(LPAR)('(')
BINARY_WITH_TYPE
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as)('as')
@@ -373,7 +375,8 @@ JetFile: HashMap.jet
PsiElement(LPAR)('(')
VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n')
CLASS
@@ -202,7 +202,8 @@ JetFile: List.jet
PsiWhiteSpace(' ')
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQEQ)('==')
@@ -256,7 +257,8 @@ JetFile: List.jet
PsiElement(IDENTIFIER)('List')
PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace('\n\n ')
PROPERTY
MODIFIER_LIST
@@ -138,7 +138,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('compare')
@@ -152,7 +153,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('data')
@@ -254,7 +256,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('compare')
@@ -268,7 +271,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('data')
@@ -297,7 +301,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('data')
@@ -343,7 +348,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('comparator')
@@ -393,7 +399,8 @@ JetFile: BinaryHeap.jet
CONDITION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('isEmpty')
@@ -942,7 +949,8 @@ JetFile: BinaryHeap.jet
PsiElement(LPAR)('(')
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MINUS)('-')
@@ -979,7 +987,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MUL)('*')
@@ -1015,7 +1024,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MUL)('*')
@@ -1067,7 +1077,8 @@ JetFile: BinaryHeap.jet
INDICES
PsiElement(LBRACKET)('[')
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
@@ -1117,7 +1128,8 @@ JetFile: BinaryHeap.jet
PsiElement(LPAR)('(')
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(LT)('<')
@@ -1137,7 +1149,8 @@ JetFile: BinaryHeap.jet
PsiElement(LPAR)('(')
BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(GTEQ)('>=')
@@ -1209,7 +1222,8 @@ JetFile: BinaryHeap.jet
PsiElement(LPAR)('(')
VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
VALUE_ARGUMENT
@@ -1274,7 +1288,8 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace(' ')
ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
INDICES
PsiElement(LBRACKET)('[')
REFERENCE_EXPRESSION
@@ -1284,7 +1299,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
INDICES
PsiElement(LBRACKET)('[')
REFERENCE_EXPRESSION
@@ -1296,7 +1312,8 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace(' ')
ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
INDICES
PsiElement(LBRACKET)('[')
REFERENCE_EXPRESSION
@@ -1306,7 +1323,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
INDICES
PsiElement(LBRACKET)('[')
REFERENCE_EXPRESSION
@@ -1356,7 +1374,8 @@ JetFile: BinaryHeap.jet
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this')
REFERENCE_EXPRESSION
PsiElement(this)('this')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('size')
+18 -1
View File
@@ -1,3 +1,19 @@
namespace qualified_this {
~qtA~class A(val a:Int) {
~qtB~class B() {
val x = `qtB`this`qtB`@B
val y = `qtA`this`qtA`@A
val z = `qtB`this
~xx~val Int.xx = `xx`this : Int
~xx()~fun Int.xx() {
`xx()`this : Int
}
}
}
}
class A<~T~T, ~E~E> {
val a : `T`T
val x : A<`T`T, `E`E>
@@ -8,4 +24,5 @@ class A<~T~T, ~E~E> {
~X.E~class E {}
}
}
}