small changes
authorbdemsky <bdemsky>
Sat, 3 Nov 2007 09:02:39 +0000 (09:02 +0000)
committerbdemsky <bdemsky>
Sat, 3 Nov 2007 09:02:39 +0000 (09:02 +0000)
Robust/src/ClassLibrary/String.java
Robust/src/IR/Tree/SemanticCheck.java
Robust/src/Main/Main.java

index d6f23e5fb21d829bf20f581a8b7ab7b146a3d073..c93d67cfd0f44ba8448e1548cceb9a689aa88665 100644 (file)
@@ -262,9 +262,9 @@ public class String {
            char l=s.value[i+s.offset];
            char r=value[i+offset];
            if (l>='a'&&l<='z')
-               l+='A'-'a';
+               l=(char)((l-'a')+'A');
            if (r>='a'&&r<='z')
-               r+='A'-'a';
+               r=(char)((r-'a')+'A');
            if (l!=r)
                return false;
        }
index 8f4d5649bcc05e73c9f5ee10ca29d89641ad3648..53df0128e75a370b5b4d54921de74e65226342e6 100644 (file)
@@ -859,14 +859,20 @@ public class SemanticCheck {
                TypeDescriptor stringtd=new TypeDescriptor(stringcl);
                NameDescriptor nd=new NameDescriptor("String");
                NameDescriptor valuend=new NameDescriptor(nd, "valueOf");
-               MethodInvokeNode leftmin=new MethodInvokeNode(valuend);
-               MethodInvokeNode rightmin=new MethodInvokeNode(valuend);
-               leftmin.addArgument(on.getLeft());
-               rightmin.addArgument(on.getRight());
-               on.left=leftmin;
-               on.right=rightmin;
-               checkExpressionNode(md, nametable, on.getLeft(), null);
-               checkExpressionNode(md, nametable, on.getRight(), null);
+               if (!(ltd.isString()&&(on.getLeft() instanceof OpNode))) {
+                   MethodInvokeNode leftmin=new MethodInvokeNode(valuend);
+                   leftmin.addArgument(on.getLeft());
+                   on.left=leftmin;
+                   checkExpressionNode(md, nametable, on.getLeft(), null);
+               }
+
+               if (!(rtd.isString()&&(on.getRight() instanceof OpNode))) {
+                   MethodInvokeNode rightmin=new MethodInvokeNode(valuend);
+                   rightmin.addArgument(on.getRight());
+                   on.right=rightmin;
+                   checkExpressionNode(md, nametable, on.getRight(), null);
+               }
+
                on.setLeftType(stringtd);
                on.setRightType(stringtd);
                on.setType(stringtd);
index c924259d8de37279487d6aad0c2daedd7ab20ef0..3b252b96ee1f45e22105938b84110e0233b604c3 100644 (file)
@@ -91,6 +91,7 @@ public class Main {
       readSourceFile(state, ClassLibraryPrefix+"Integer.java");
       readSourceFile(state, ClassLibraryPrefix+"StringBuffer.java");
       readSourceFile(state, ClassLibraryPrefix+"FileInputStream.java");
+      readSourceFile(state, ClassLibraryPrefix+"InputStream.java");
       readSourceFile(state, ClassLibraryPrefix+"FileOutputStream.java");
       readSourceFile(state, ClassLibraryPrefix+"File.java");
       readSourceFile(state, ClassLibraryPrefix+"InetAddress.java");