From f84bdf0d54a5f337a035fdaa5316461c3fd8e446 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 5 May 2011 17:07:22 +0400 Subject: [PATCH] Initial design for the TypeInfo class --- idea/src/jet/{lang => }/Library.jet | 7 +++- .../jet/lang/types/JetStandardLibrary.java | 2 +- stdlib/src/jet/JetObject.java | 10 ++++++ stdlib/src/jet/typeinfo/TypeInfo.java | 33 +++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) rename idea/src/jet/{lang => }/Library.jet (99%) create mode 100644 stdlib/src/jet/JetObject.java create mode 100644 stdlib/src/jet/typeinfo/TypeInfo.java diff --git a/idea/src/jet/lang/Library.jet b/idea/src/jet/Library.jet similarity index 99% rename from idea/src/jet/lang/Library.jet rename to idea/src/jet/Library.jet index 49e5ab1bd64..aa7a2b95e66 100644 --- a/idea/src/jet/lang/Library.jet +++ b/idea/src/jet/Library.jet @@ -1,4 +1,9 @@ -namespace jet.lang +namespace jet + +class TypeInfo { + fun isSubtypeOf(other : TypeInfo<*>) : Boolean + fun isInstance(obj : Any?) : Boolean +} class Iterator { fun next() : T diff --git a/idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java b/idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java index 8179ef03b7c..891338153c2 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java @@ -63,7 +63,7 @@ public class JetStandardLibrary { private JetStandardLibrary(@NotNull Project project) { // TODO : review - InputStream stream = JetStandardClasses.class.getClassLoader().getResourceAsStream("jet/lang/Library.jet"); + InputStream stream = JetStandardClasses.class.getClassLoader().getResourceAsStream("jet/Library.jet"); try { //noinspection IOResourceOpenedButNotSafelyClosed JetFile file = (JetFile) PsiFileFactory.getInstance(project).createFileFromText("Library.jet", diff --git a/stdlib/src/jet/JetObject.java b/stdlib/src/jet/JetObject.java new file mode 100644 index 00000000000..c06fd1f755a --- /dev/null +++ b/stdlib/src/jet/JetObject.java @@ -0,0 +1,10 @@ +package jet; + +import jet.typeinfo.TypeInfo; + +/** + * @author abreslav + */ +public interface JetObject { + TypeInfo getTypeInfo(); +} diff --git a/stdlib/src/jet/typeinfo/TypeInfo.java b/stdlib/src/jet/typeinfo/TypeInfo.java new file mode 100644 index 00000000000..4467901e47f --- /dev/null +++ b/stdlib/src/jet/typeinfo/TypeInfo.java @@ -0,0 +1,33 @@ +package jet.typeinfo; + +import jet.JetObject; + +/** + * @author abreslav + */ +public class TypeInfo implements JetObject { + + private TypeInfo typeInfo; + private final TypeInfo typeArgument; + + private TypeInfo(TypeInfo typeArgument) { + this.typeArgument = typeArgument; + } + + public boolean isInstance(Object obj) { + throw new UnsupportedOperationException(); // TODO + } + + public boolean isSubtypeOf(TypeInfo other) { + throw new UnsupportedOperationException(); // TODO + } + + @Override + public TypeInfo getTypeInfo() { + if (typeInfo == null) { + // TODO: Implementation must be lazy, otherwise the result would be of an infinite size + throw new UnsupportedOperationException(); // TODO + } + return typeInfo; + } +}