[noop] push by aeagle22206 - This changelist is totally noise, just changing the scala model object... on 2009-12-11 06:06 GMT

2 views
Skip to first unread message

no...@googlecode.com

unread,
Dec 11, 2009, 1:10:24 AM12/11/09
to noop-c...@googlegroups.com
Revision: 28fbd0ca18
Author: Alex Eagle <alex...@google.com>
Date: Thu Dec 10 22:06:44 2009
Log: This changelist is totally noise, just changing the scala model
objects to be wrappers around corresponding proto buffer data.

Only partway through this refactor, will continue on another machine. Note
this is still on an experimental branch.
http://code.google.com/p/noop/source/detail?r=28fbd0ca18

Added:
/core/src/main/java/noop/model/proto/Noop.java
/core/src/main/scala/noop/model/AliasDefinition.scala
/core/src/main/scala/noop/model/ExpressionConverter.scala
/core/src/main/scala/noop/model/MethodDefinition.scala
Deleted:
/core/src/main/scala/noop/model/Alias.scala
/core/src/main/scala/noop/model/Method.scala
/core/src/main/scala/noop/model/persistence/YamlAstSerializer.scala
/core/src/test/resources/noop/model/persistence/ast-structure.yaml
/core/src/test/scala/noop/model/persistence/YamlAstSerializerSpec.scala
Modified:
/core/src/main/scala/noop/model/AstRoot.scala
/core/src/main/scala/noop/model/BindingDeclaration.scala
/core/src/main/scala/noop/model/BindingDefinition.scala
/core/src/main/scala/noop/model/ClassDefinition.scala
/core/src/main/scala/noop/model/CompositeVisitor.scala
/core/src/main/scala/noop/model/ConcreteClassDefinition.scala
/core/src/main/scala/noop/model/InterfaceDefinition.scala
/core/src/main/scala/noop/model/LoggingAstVisitor.scala
/core/src/main/scala/noop/model/Module.scala
/core/src/main/scala/noop/model/Visitor.scala
/core/src/main/scala/noop/model/persistence/ClassRepository.scala
/core/src/main/scala/noop/types/NoopObject.scala
/interpreter/src/main/scala/noop/inject/GuiceBackedInjector.scala
/interpreter/src/main/scala/noop/inject/Injector.scala
/interpreter/src/main/scala/noop/interpreter/Frame.scala
/interpreter/src/main/scala/noop/interpreter/InterpreterModule.scala
/interpreter/src/main/scala/noop/interpreter/SourceFileClassLoader.scala

=======================================
--- /dev/null
+++ /core/src/main/java/noop/model/proto/Noop.java Thu Dec 10 22:06:44 2009
@@ -0,0 +1,6949 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+
+package noop.model.proto;
+
+public final class Noop {
+ private Noop() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ }
+ public enum Modifier
+ implements com.google.protobuf.ProtocolMessageEnum {
+ MUTABLE(0, 1),
+ ;
+
+
+ public final int getNumber() { return value; }
+
+ public static Modifier valueOf(int value) {
+ switch (value) {
+ case 1: return MUTABLE;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Modifier>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static com.google.protobuf.Internal.EnumLiteMap<Modifier>
+ internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Modifier>() {
+ public Modifier findValueByNumber(int number) {
+ return Modifier.valueOf(number)
+ ; }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(index);
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return noop.model.proto.Noop.getDescriptor().getEnumTypes().get(0);
+ }
+
+ private static final Modifier[] VALUES = {
+ MUTABLE,
+ };
+ public static Modifier valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ return VALUES[desc.getIndex()];
+ }
+ private final int index;
+ private final int value;
+ private Modifier(int index, int value) {
+ this.index = index;
+ this.value = value;
+ }
+
+ static {
+ noop.model.proto.Noop.getDescriptor();
+ }
+ }
+
+ public static final class Module extends
+ com.google.protobuf.GeneratedMessage {
+ // Use Module.newBuilder() to construct.
+ private Module() {}
+
+ private static final Module defaultInstance = new Module();
+ public static Module getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public Module getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return noop.model.proto.Noop.internal_static_Module_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return
noop.model.proto.Noop.internal_static_Module_fieldAccessorTable;
+ }
+
+ // required string name = 1;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private boolean hasName;
+ private java.lang.String name_ = "";
+ public boolean hasName() { return hasName; }
+ public java.lang.String getName() { return name_; }
+
+ // optional string documentation = 2;
+ public static final int DOCUMENTATION_FIELD_NUMBER = 2;
+ private boolean hasDocumentation;
+ private java.lang.String documentation_ = "";
+ public boolean hasDocumentation() { return hasDocumentation; }
+ public java.lang.String getDocumentation() { return documentation_; }
+
+ // repeated .Binding binding = 3;
+ public static final int BINDING_FIELD_NUMBER = 3;
+ private java.util.List<noop.model.proto.Noop.Binding> binding_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Binding> getBindingList() {
+ return binding_;
+ }
+ public int getBindingCount() { return binding_.size(); }
+ public noop.model.proto.Noop.Binding getBinding(int index) {
+ return binding_.get(index);
+ }
+
+ // repeated .Alias alias = 4;
+ public static final int ALIAS_FIELD_NUMBER = 4;
+ private java.util.List<noop.model.proto.Noop.Alias> alias_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Alias> getAliasList() {
+ return alias_;
+ }
+ public int getAliasCount() { return alias_.size(); }
+ public noop.model.proto.Noop.Alias getAlias(int index) {
+ return alias_.get(index);
+ }
+
+ // repeated .Interface interface = 5;
+ public static final int INTERFACE_FIELD_NUMBER = 5;
+ private java.util.List<noop.model.proto.Noop.Interface> interface_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Interface>
getInterfaceList() {
+ return interface_;
+ }
+ public int getInterfaceCount() { return interface_.size(); }
+ public noop.model.proto.Noop.Interface getInterface(int index) {
+ return interface_.get(index);
+ }
+
+ // repeated .ConcreteClass concrete_class = 6;
+ public static final int CONCRETE_CLASS_FIELD_NUMBER = 6;
+ private java.util.List<noop.model.proto.Noop.ConcreteClass>
concreteClass_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.ConcreteClass>
getConcreteClassList() {
+ return concreteClass_;
+ }
+ public int getConcreteClassCount() { return concreteClass_.size(); }
+ public noop.model.proto.Noop.ConcreteClass getConcreteClass(int index)
{
+ return concreteClass_.get(index);
+ }
+
+ public final boolean isInitialized() {
+ if (!hasName) return false;
+ for (noop.model.proto.Noop.Binding element : getBindingList()) {
+ if (!element.isInitialized()) return false;
+ }
+ for (noop.model.proto.Noop.Alias element : getAliasList()) {
+ if (!element.isInitialized()) return false;
+ }
+ for (noop.model.proto.Noop.Interface element : getInterfaceList()) {
+ if (!element.isInitialized()) return false;
+ }
+ for (noop.model.proto.Noop.ConcreteClass element :
getConcreteClassList()) {
+ if (!element.isInitialized()) return false;
+ }
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (hasName()) {
+ output.writeString(1, getName());
+ }
+ if (hasDocumentation()) {
+ output.writeString(2, getDocumentation());
+ }
+ for (noop.model.proto.Noop.Binding element : getBindingList()) {
+ output.writeMessage(3, element);
+ }
+ for (noop.model.proto.Noop.Alias element : getAliasList()) {
+ output.writeMessage(4, element);
+ }
+ for (noop.model.proto.Noop.Interface element : getInterfaceList()) {
+ output.writeMessage(5, element);
+ }
+ for (noop.model.proto.Noop.ConcreteClass element :
getConcreteClassList()) {
+ output.writeMessage(6, element);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (hasName()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(1, getName());
+ }
+ if (hasDocumentation()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(2, getDocumentation());
+ }
+ for (noop.model.proto.Noop.Binding element : getBindingList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(3, element);
+ }
+ for (noop.model.proto.Noop.Alias element : getAliasList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(4, element);
+ }
+ for (noop.model.proto.Noop.Interface element : getInterfaceList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(5, element);
+ }
+ for (noop.model.proto.Noop.ConcreteClass element :
getConcreteClassList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(6, element);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ public static noop.model.proto.Noop.Module parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.Module
parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.Module
parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeDelimitedFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.Module parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(noop.model.proto.Noop.Module
prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder> {
+ private noop.model.proto.Noop.Module result;
+
+ // Construct using noop.model.proto.Noop.Module.newBuilder()
+ private Builder() {}
+
+ private static Builder create() {
+ Builder builder = new Builder();
+ builder.result = new noop.model.proto.Noop.Module();
+ return builder;
+ }
+
+ protected noop.model.proto.Noop.Module internalGetResult() {
+ return result;
+ }
+
+ public Builder clear() {
+ if (result == null) {
+ throw new IllegalStateException(
+ "Cannot call clear() after build().");
+ }
+ result = new noop.model.proto.Noop.Module();
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(result);
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return noop.model.proto.Noop.Module.getDescriptor();
+ }
+
+ public noop.model.proto.Noop.Module getDefaultInstanceForType() {
+ return noop.model.proto.Noop.Module.getDefaultInstance();
+ }
+
+ public boolean isInitialized() {
+ return result.isInitialized();
+ }
+ public noop.model.proto.Noop.Module build() {
+ if (result != null && !isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return buildPartial();
+ }
+
+ private noop.model.proto.Noop.Module buildParsed()
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ if (!isInitialized()) {
+ throw newUninitializedMessageException(
+ result).asInvalidProtocolBufferException();
+ }
+ return buildPartial();
+ }
+
+ public noop.model.proto.Noop.Module buildPartial() {
+ if (result == null) {
+ throw new IllegalStateException(
+ "build() has already been called on this Builder.");
+ }
+ if (result.binding_ != java.util.Collections.EMPTY_LIST) {
+ result.binding_ =
+ java.util.Collections.unmodifiableList(result.binding_);
+ }
+ if (result.alias_ != java.util.Collections.EMPTY_LIST) {
+ result.alias_ =
+ java.util.Collections.unmodifiableList(result.alias_);
+ }
+ if (result.interface_ != java.util.Collections.EMPTY_LIST) {
+ result.interface_ =
+ java.util.Collections.unmodifiableList(result.interface_);
+ }
+ if (result.concreteClass_ != java.util.Collections.EMPTY_LIST) {
+ result.concreteClass_ =
+ java.util.Collections.unmodifiableList(result.concreteClass_);
+ }
+ noop.model.proto.Noop.Module returnMe = result;
+ result = null;
+ return returnMe;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof noop.model.proto.Noop.Module) {
+ return mergeFrom((noop.model.proto.Noop.Module)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(noop.model.proto.Noop.Module other) {
+ if (other == noop.model.proto.Noop.Module.getDefaultInstance())
return this;
+ if (other.hasName()) {
+ setName(other.getName());
+ }
+ if (other.hasDocumentation()) {
+ setDocumentation(other.getDocumentation());
+ }
+ if (!other.binding_.isEmpty()) {
+ if (result.binding_.isEmpty()) {
+ result.binding_ = new
java.util.ArrayList<noop.model.proto.Noop.Binding>();
+ }
+ result.binding_.addAll(other.binding_);
+ }
+ if (!other.alias_.isEmpty()) {
+ if (result.alias_.isEmpty()) {
+ result.alias_ = new
java.util.ArrayList<noop.model.proto.Noop.Alias>();
+ }
+ result.alias_.addAll(other.alias_);
+ }
+ if (!other.interface_.isEmpty()) {
+ if (result.interface_.isEmpty()) {
+ result.interface_ = new
java.util.ArrayList<noop.model.proto.Noop.Interface>();
+ }
+ result.interface_.addAll(other.interface_);
+ }
+ if (!other.concreteClass_.isEmpty()) {
+ if (result.concreteClass_.isEmpty()) {
+ result.concreteClass_ = new
java.util.ArrayList<noop.model.proto.Noop.ConcreteClass>();
+ }
+ result.concreteClass_.addAll(other.concreteClass_);
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder(
+ this.getUnknownFields());
+ while (true) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ this.setUnknownFields(unknownFields.build());
+ return this;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ this.setUnknownFields(unknownFields.build());
+ return this;
+ }
+ break;
+ }
+ case 10: {
+ setName(input.readString());
+ break;
+ }
+ case 18: {
+ setDocumentation(input.readString());
+ break;
+ }
+ case 26: {
+ noop.model.proto.Noop.Binding.Builder subBuilder =
noop.model.proto.Noop.Binding.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addBinding(subBuilder.buildPartial());
+ break;
+ }
+ case 34: {
+ noop.model.proto.Noop.Alias.Builder subBuilder =
noop.model.proto.Noop.Alias.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addAlias(subBuilder.buildPartial());
+ break;
+ }
+ case 42: {
+ noop.model.proto.Noop.Interface.Builder subBuilder =
noop.model.proto.Noop.Interface.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addInterface(subBuilder.buildPartial());
+ break;
+ }
+ case 50: {
+ noop.model.proto.Noop.ConcreteClass.Builder subBuilder =
noop.model.proto.Noop.ConcreteClass.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addConcreteClass(subBuilder.buildPartial());
+ break;
+ }
+ }
+ }
+ }
+
+
+ // required string name = 1;
+ public boolean hasName() {
+ return result.hasName();
+ }
+ public java.lang.String getName() {
+ return result.getName();
+ }
+ public Builder setName(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasName = true;
+ result.name_ = value;
+ return this;
+ }
+ public Builder clearName() {
+ result.hasName = false;
+ result.name_ = getDefaultInstance().getName();
+ return this;
+ }
+
+ // optional string documentation = 2;
+ public boolean hasDocumentation() {
+ return result.hasDocumentation();
+ }
+ public java.lang.String getDocumentation() {
+ return result.getDocumentation();
+ }
+ public Builder setDocumentation(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasDocumentation = true;
+ result.documentation_ = value;
+ return this;
+ }
+ public Builder clearDocumentation() {
+ result.hasDocumentation = false;
+ result.documentation_ = getDefaultInstance().getDocumentation();
+ return this;
+ }
+
+ // repeated .Binding binding = 3;
+ public java.util.List<noop.model.proto.Noop.Binding>
getBindingList() {
+ return java.util.Collections.unmodifiableList(result.binding_);
+ }
+ public int getBindingCount() {
+ return result.getBindingCount();
+ }
+ public noop.model.proto.Noop.Binding getBinding(int index) {
+ return result.getBinding(index);
+ }
+ public Builder setBinding(int index, noop.model.proto.Noop.Binding
value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.binding_.set(index, value);
+ return this;
+ }
+ public Builder setBinding(int index,
noop.model.proto.Noop.Binding.Builder builderForValue) {
+ result.binding_.set(index, builderForValue.build());
+ return this;
+ }
+ public Builder addBinding(noop.model.proto.Noop.Binding value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ if (result.binding_.isEmpty()) {
+ result.binding_ = new
java.util.ArrayList<noop.model.proto.Noop.Binding>();
+ }
+ result.binding_.add(value);
+ return this;
+ }
+ public Builder addBinding(noop.model.proto.Noop.Binding.Builder
builderForValue) {
+ if (result.binding_.isEmpty()) {
+ result.binding_ = new
java.util.ArrayList<noop.model.proto.Noop.Binding>();
+ }
+ result.binding_.add(builderForValue.build());
+ return this;
+ }
+ public Builder addAllBinding(
+ java.lang.Iterable<? extends noop.model.proto.Noop.Binding>
values) {
+ if (result.binding_.isEmpty()) {
+ result.binding_ = new
java.util.ArrayList<noop.model.proto.Noop.Binding>();
+ }
+ super.addAll(values, result.binding_);
+ return this;
+ }
+ public Builder clearBinding() {
+ result.binding_ = java.util.Collections.emptyList();
+ return this;
+ }
+
+ // repeated .Alias alias = 4;
+ public java.util.List<noop.model.proto.Noop.Alias> getAliasList() {
+ return java.util.Collections.unmodifiableList(result.alias_);
+ }
+ public int getAliasCount() {
+ return result.getAliasCount();
+ }
+ public noop.model.proto.Noop.Alias getAlias(int index) {
+ return result.getAlias(index);
+ }
+ public Builder setAlias(int index, noop.model.proto.Noop.Alias
value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.alias_.set(index, value);
+ return this;
+ }
+ public Builder setAlias(int index,
noop.model.proto.Noop.Alias.Builder builderForValue) {
+ result.alias_.set(index, builderForValue.build());
+ return this;
+ }
+ public Builder addAlias(noop.model.proto.Noop.Alias value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ if (result.alias_.isEmpty()) {
+ result.alias_ = new
java.util.ArrayList<noop.model.proto.Noop.Alias>();
+ }
+ result.alias_.add(value);
+ return this;
+ }
+ public Builder addAlias(noop.model.proto.Noop.Alias.Builder
builderForValue) {
+ if (result.alias_.isEmpty()) {
+ result.alias_ = new
java.util.ArrayList<noop.model.proto.Noop.Alias>();
+ }
+ result.alias_.add(builderForValue.build());
+ return this;
+ }
+ public Builder addAllAlias(
+ java.lang.Iterable<? extends noop.model.proto.Noop.Alias>
values) {
+ if (result.alias_.isEmpty()) {
+ result.alias_ = new
java.util.ArrayList<noop.model.proto.Noop.Alias>();
+ }
+ super.addAll(values, result.alias_);
+ return this;
+ }
+ public Builder clearAlias() {
+ result.alias_ = java.util.Collections.emptyList();
+ return this;
+ }
+
+ // repeated .Interface interface = 5;
+ public java.util.List<noop.model.proto.Noop.Interface>
getInterfaceList() {
+ return java.util.Collections.unmodifiableList(result.interface_);
+ }
+ public int getInterfaceCount() {
+ return result.getInterfaceCount();
+ }
+ public noop.model.proto.Noop.Interface getInterface(int index) {
+ return result.getInterface(index);
+ }
+ public Builder setInterface(int index,
noop.model.proto.Noop.Interface value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.interface_.set(index, value);
+ return this;
+ }
+ public Builder setInterface(int index,
noop.model.proto.Noop.Interface.Builder builderForValue) {
+ result.interface_.set(index, builderForValue.build());
+ return this;
+ }
+ public Builder addInterface(noop.model.proto.Noop.Interface value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ if (result.interface_.isEmpty()) {
+ result.interface_ = new
java.util.ArrayList<noop.model.proto.Noop.Interface>();
+ }
+ result.interface_.add(value);
+ return this;
+ }
+ public Builder addInterface(noop.model.proto.Noop.Interface.Builder
builderForValue) {
+ if (result.interface_.isEmpty()) {
+ result.interface_ = new
java.util.ArrayList<noop.model.proto.Noop.Interface>();
+ }
+ result.interface_.add(builderForValue.build());
+ return this;
+ }
+ public Builder addAllInterface(
+ java.lang.Iterable<? extends noop.model.proto.Noop.Interface>
values) {
+ if (result.interface_.isEmpty()) {
+ result.interface_ = new
java.util.ArrayList<noop.model.proto.Noop.Interface>();
+ }
+ super.addAll(values, result.interface_);
+ return this;
+ }
+ public Builder clearInterface() {
+ result.interface_ = java.util.Collections.emptyList();
+ return this;
+ }
+
+ // repeated .ConcreteClass concrete_class = 6;
+ public java.util.List<noop.model.proto.Noop.ConcreteClass>
getConcreteClassList() {
+ return
java.util.Collections.unmodifiableList(result.concreteClass_);
+ }
+ public int getConcreteClassCount() {
+ return result.getConcreteClassCount();
+ }
+ public noop.model.proto.Noop.ConcreteClass getConcreteClass(int
index) {
+ return result.getConcreteClass(index);
+ }
+ public Builder setConcreteClass(int index,
noop.model.proto.Noop.ConcreteClass value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.concreteClass_.set(index, value);
+ return this;
+ }
+ public Builder setConcreteClass(int index,
noop.model.proto.Noop.ConcreteClass.Builder builderForValue) {
+ result.concreteClass_.set(index, builderForValue.build());
+ return this;
+ }
+ public Builder addConcreteClass(noop.model.proto.Noop.ConcreteClass
value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ if (result.concreteClass_.isEmpty()) {
+ result.concreteClass_ = new
java.util.ArrayList<noop.model.proto.Noop.ConcreteClass>();
+ }
+ result.concreteClass_.add(value);
+ return this;
+ }
+ public Builder
addConcreteClass(noop.model.proto.Noop.ConcreteClass.Builder
builderForValue) {
+ if (result.concreteClass_.isEmpty()) {
+ result.concreteClass_ = new
java.util.ArrayList<noop.model.proto.Noop.ConcreteClass>();
+ }
+ result.concreteClass_.add(builderForValue.build());
+ return this;
+ }
+ public Builder addAllConcreteClass(
+ java.lang.Iterable<? extends
noop.model.proto.Noop.ConcreteClass> values) {
+ if (result.concreteClass_.isEmpty()) {
+ result.concreteClass_ = new
java.util.ArrayList<noop.model.proto.Noop.ConcreteClass>();
+ }
+ super.addAll(values, result.concreteClass_);
+ return this;
+ }
+ public Builder clearConcreteClass() {
+ result.concreteClass_ = java.util.Collections.emptyList();
+ return this;
+ }
+ }
+
+ static {
+ noop.model.proto.Noop.getDescriptor();
+ }
+
+ static {
+ noop.model.proto.Noop.internalForceInit();
+ }
+ }
+
+ public static final class ConcreteClass extends
+ com.google.protobuf.GeneratedMessage {
+ // Use ConcreteClass.newBuilder() to construct.
+ private ConcreteClass() {}
+
+ private static final ConcreteClass defaultInstance = new
ConcreteClass();
+ public static ConcreteClass getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public ConcreteClass getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return
noop.model.proto.Noop.internal_static_ConcreteClass_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return
noop.model.proto.Noop.internal_static_ConcreteClass_fieldAccessorTable;
+ }
+
+ // required string name = 1;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private boolean hasName;
+ private java.lang.String name_ = "";
+ public boolean hasName() { return hasName; }
+ public java.lang.String getName() { return name_; }
+
+ // optional string documentation = 2;
+ public static final int DOCUMENTATION_FIELD_NUMBER = 2;
+ private boolean hasDocumentation;
+ private java.lang.String documentation_ = "";
+ public boolean hasDocumentation() { return hasDocumentation; }
+ public java.lang.String getDocumentation() { return documentation_; }
+
+ // repeated string super_type = 3;
+ public static final int SUPER_TYPE_FIELD_NUMBER = 3;
+ private java.util.List<java.lang.String> superType_ =
+ java.util.Collections.emptyList();
+ public java.util.List<java.lang.String> getSuperTypeList() {
+ return superType_;
+ }
+ public int getSuperTypeCount() { return superType_.size(); }
+ public java.lang.String getSuperType(int index) {
+ return superType_.get(index);
+ }
+
+ // repeated .Property property = 4;
+ public static final int PROPERTY_FIELD_NUMBER = 4;
+ private java.util.List<noop.model.proto.Noop.Property> property_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Property>
getPropertyList() {
+ return property_;
+ }
+ public int getPropertyCount() { return property_.size(); }
+ public noop.model.proto.Noop.Property getProperty(int index) {
+ return property_.get(index);
+ }
+
+ // repeated .Method method = 5;
+ public static final int METHOD_FIELD_NUMBER = 5;
+ private java.util.List<noop.model.proto.Noop.Method> method_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Method> getMethodList() {
+ return method_;
+ }
+ public int getMethodCount() { return method_.size(); }
+ public noop.model.proto.Noop.Method getMethod(int index) {
+ return method_.get(index);
+ }
+
+ // repeated .Unittest unittest = 6;
+ public static final int UNITTEST_FIELD_NUMBER = 6;
+ private java.util.List<noop.model.proto.Noop.Unittest> unittest_ =
+ java.util.Collections.emptyList();
+ public java.util.List<noop.model.proto.Noop.Unittest>
getUnittestList() {
+ return unittest_;
+ }
+ public int getUnittestCount() { return unittest_.size(); }
+ public noop.model.proto.Noop.Unittest getUnittest(int index) {
+ return unittest_.get(index);
+ }
+
+ public final boolean isInitialized() {
+ if (!hasName) return false;
+ for (noop.model.proto.Noop.Property element : getPropertyList()) {
+ if (!element.isInitialized()) return false;
+ }
+ for (noop.model.proto.Noop.Method element : getMethodList()) {
+ if (!element.isInitialized()) return false;
+ }
+ for (noop.model.proto.Noop.Unittest element : getUnittestList()) {
+ if (!element.isInitialized()) return false;
+ }
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (hasName()) {
+ output.writeString(1, getName());
+ }
+ if (hasDocumentation()) {
+ output.writeString(2, getDocumentation());
+ }
+ for (java.lang.String element : getSuperTypeList()) {
+ output.writeString(3, element);
+ }
+ for (noop.model.proto.Noop.Property element : getPropertyList()) {
+ output.writeMessage(4, element);
+ }
+ for (noop.model.proto.Noop.Method element : getMethodList()) {
+ output.writeMessage(5, element);
+ }
+ for (noop.model.proto.Noop.Unittest element : getUnittestList()) {
+ output.writeMessage(6, element);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (hasName()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(1, getName());
+ }
+ if (hasDocumentation()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(2, getDocumentation());
+ }
+ {
+ int dataSize = 0;
+ for (java.lang.String element : getSuperTypeList()) {
+ dataSize += com.google.protobuf.CodedOutputStream
+ .computeStringSizeNoTag(element);
+ }
+ size += dataSize;
+ size += 1 * getSuperTypeList().size();
+ }
+ for (noop.model.proto.Noop.Property element : getPropertyList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(4, element);
+ }
+ for (noop.model.proto.Noop.Method element : getMethodList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(5, element);
+ }
+ for (noop.model.proto.Noop.Unittest element : getUnittestList()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(6, element);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(byte[]
data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass
parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass
parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeDelimitedFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static noop.model.proto.Noop.ConcreteClass parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(noop.model.proto.Noop.ConcreteClass
prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder> {
+ private noop.model.proto.Noop.ConcreteClass result;
+
+ // Construct using noop.model.proto.Noop.ConcreteClass.newBuilder()
+ private Builder() {}
+
+ private static Builder create() {
+ Builder builder = new Builder();
+ builder.result = new noop.model.proto.Noop.ConcreteClass();
+ return builder;
+ }
+
+ protected noop.model.proto.Noop.ConcreteClass internalGetResult() {
+ return result;
+ }
+
+ public Builder clear() {
+ if (result == null) {
+ throw new IllegalStateException(
+ "Cannot call clear() after build().");
+ }
+ result = new noop.model.proto.Noop.ConcreteClass();
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(result);
+ }
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /core/src/main/scala/noop/model/AliasDefinition.scala Thu Dec 10
22:06:44 2009
@@ -0,0 +1,8 @@
+package noop.model
+
+import proto.Noop.Alias
+
+/**
+ * @author alex...@google.com (Alex Eagle)
+ */
+class AliasDefinition(val data: Alias) extends ClassDefinition
=======================================
--- /dev/null
+++ /core/src/main/scala/noop/model/ExpressionConverter.scala Thu Dec 10
22:06:44 2009
@@ -0,0 +1,13 @@
+package noop.model
+
+import proto.Noop
+
+/**
+ * TODO(alexeagle): evil?
+ * @author alex...@google.com (Alex Eagle)
+ */
+object ExpressionConverter {
+ def fromData(expr: Noop.Expression): Expression = {
+
+ }
+}
=======================================
--- /dev/null
+++ /core/src/main/scala/noop/model/MethodDefinition.scala Thu Dec 10
22:06:44 2009
@@ -0,0 +1,29 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package noop.model;
+
+import proto.Noop.Method;
+
+/**
+ * Represents the declaration of a method in source code.
+ *
+ * @author alex...@google.com (Alex Eagle)
+ * @author toc...@gmail.com (Jeremie Lenfant-Engelmann)
+ */
+class MethodDefinition(val data: Method) {
+ override def toString() = String.format("Method %s (%s) returns %s",
+ data.getSignature.getName, data.getSignature.getArgumentList,
data.getSignature.getReturnTypeList);
+}
=======================================
--- /core/src/main/scala/noop/model/Alias.scala Wed Dec 9 08:21:10 2009
+++ /dev/null
@@ -1,11 +0,0 @@
-package noop.model
-
-/**
- * Created by IntelliJ IDEA.
- * User: eva
- * Date: Dec 9, 2009
- * Time: 12:15:08 AM
- * To change this template use File | Settings | File Templates.
- */
-
-class Alias(val name: String, val of: String);
=======================================
--- /core/src/main/scala/noop/model/Method.scala Fri Nov 13 16:27:54 2009
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package noop.model;
-
-import collection.mutable.{ArrayBuffer, Buffer};
-
-/**
- * Represents the declaration of a method in source code.
- *
- * @author alex...@google.com (Alex Eagle)
- * @author toc...@gmail.com (Jeremie Lenfant-Engelmann)
- */
-class Method(val name: String, val block: Block, val documentation:
String) {
-
- val returnTypes: Buffer[String] = new ArrayBuffer[String]();
- val parameters: Buffer[Parameter] = new ArrayBuffer[Parameter]();
- val modifiers: Buffer[Modifier.Value] = new
ArrayBuffer[Modifier.Value]();
-
- override def toString() = String.format("Method %s (%s) returns %s",
name, parameters, returnTypes);
-}
=======================================
--- /core/src/main/scala/noop/model/persistence/YamlAstSerializer.scala Wed
Dec 9 08:21:10 2009
+++ /dev/null
@@ -1,28 +0,0 @@
-package noop.model.persistence;
-
-import noop.model.AstRoot
-import java.io.{InputStreamReader, InputStream}
-
-import noop.model.Module;
-import org.jvyaml.YAML;
-
-import java.util.Map;
-
-/**
- * @author alex...@google.com (Alex Eagle)
- */
-class YamlAstSerializer {
- def deserialize(stream: InputStream): AstRoot = {
- val modules = List(YAML.load(new
InputStreamReader(stream)).asInstanceOf[java.util.List[Object]].toArray :
_*);
- val result = new AstRoot();
- for (moduleMap <- modules) {
- val module: Module =
deserializeModule(moduleMap.asInstanceOf[Map[String, Object]]);
- result.modules += module;
- }
- return result;
- }
-
- def deserializeModule(map: Map[String, Object]): Module = {
- new Module(map.get("name").asInstanceOf[String],
map.get("documentation").asInstanceOf[String]);
- }
-}
=======================================
--- /core/src/test/resources/noop/model/persistence/ast-structure.yaml Wed
Dec 9 08:21:10 2009
+++ /dev/null
@@ -1,41 +0,0 @@
-- name: CmdLineModule
- documentation: Contains all the code for the cmdLineArgs app
- bindings:
- - name: mine.MyBinding
- documentation: wires up my app
- body:
- - bindOperator: [ noop.Application, mine.MyBinding ]
- concrete classes:
- - name: mine.MyClass
- documentation: some documentation
- supertypes: [ noop.Application ]
- properties:
- - name: console
- type: noop.system.Console
- - name: args
- type: noop.system.RawCommandLineArgs
- modifiers: [ ]
- methods:
- - name: main
- overrides: noop.Application#main
- documentation: entry point
- body:
- - methodInvocation:
- - lhs: console
- method: println
- arguments:
- - indexOperator: [ args, 0 ]
- - returnStatement: 0
- - name: helper
- documentation: formats string
- unittests:
- - description: Should print the first argument
-- name: StandardLib
- documentation: Comes with the language
- interfaces:
- - name: noop.Application
- documentation: Does stuff
- methods:
- - name: main
- return type: Int
- arguments: []
=======================================
--- /core/src/test/scala/noop/model/persistence/YamlAstSerializerSpec.scala
Wed Dec 9 08:21:10 2009
+++ /dev/null
@@ -1,24 +0,0 @@
-package noop.model.persistence;
-
-import junit.framework.TestCase
-import org.scalatest.matchers.ShouldMatchers;
-import noop.model.AstRoot;
-import org.scalatest.Spec;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-
-/**
- * @author alex...@google.com (Alex Eagle)
- */
-class YamlAstSerializerSpec extends Spec with ShouldMatchers {
- val serializer = new YamlAstSerializer();
-
- describe("deserializing an AST from YAML") {
- it ("should deserialize a whole AST") {
- val ast: AstRoot =
serializer.deserialize(getClass().getResourceAsStream("ast-structure.yaml"));
- ast.modules(0).name should be("CmdLineModule");
- }
- }
-}
=======================================
--- /core/src/main/scala/noop/model/AstRoot.scala Wed Dec 9 08:21:10 2009
+++ /core/src/main/scala/noop/model/AstRoot.scala Thu Dec 10 22:06:44 2009
@@ -3,11 +3,7 @@
import collection.mutable.{ArrayBuffer, Buffer}

/**
- * Created by IntelliJ IDEA.
- * User: eva
- * Date: Dec 9, 2009
- * Time: 12:23:14 AM
- * To change this template use File | Settings | File Templates.
+ * @author alex...@google.com (Alex Eagle)
*/

class AstRoot {
=======================================
--- /core/src/main/scala/noop/model/BindingDeclaration.scala Thu Dec 3
21:26:31 2009
+++ /core/src/main/scala/noop/model/BindingDeclaration.scala Thu Dec 10
22:06:44 2009
@@ -13,18 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package noop.model;
+package noop.model
+
+import proto.Noop.BindOperator;

/**
* AST model element which represents a declaration of a binding from a
type to an expression.
* @author alex...@google.com (Alex Eagle)
*/
-class BindingDeclaration(val noopType: String, val boundTo: Expression)
extends Expression {
+class BindingDeclaration(val data: BindOperator) extends Expression {

def accept(visitor: Visitor) = {
- boundTo.accept(visitor);
+ Expression.forData(data.getTo).accept(visitor);
visitor.visit(this);
}

- override def toString() = noopType + " -> " + boundTo;
-}
+ override def toString() = data.getType + " -> " + data.getTo;
+}
=======================================
--- /core/src/main/scala/noop/model/BindingDefinition.scala Thu Dec 3
21:26:31 2009
+++ /core/src/main/scala/noop/model/BindingDefinition.scala Thu Dec 10
22:06:44 2009
@@ -15,14 +15,13 @@
*/
package noop.model

-import scala.collection.mutable.{ArrayBuffer, Buffer};
+import proto.Noop.Binding
+import collection.jcl.Buffer

/**
* AST element representing a top-level bindings definition
* @author Alex Eagle (alex...@google.com)
*/
-class BindingDefinition(name: String, namespace: String, documentation:
String)
- extends ClassDefinition(name, namespace, documentation) {
- val bindings: Buffer[BindingDeclaration] = new
ArrayBuffer[BindingDeclaration];
-
-}
+class BindingDefinition(val data: Binding) extends ClassDefinition() {
+ def bindings: Seq[BindingDeclaration] =
Buffer(data.getBlock.getBindList).map(b => new BindingDeclaration(b));
+}
=======================================
--- /core/src/main/scala/noop/model/ClassDefinition.scala Sat Dec 5
16:49:22 2009
+++ /core/src/main/scala/noop/model/ClassDefinition.scala Thu Dec 10
22:06:44 2009
@@ -15,37 +15,10 @@
*/
package noop.model;

-import noop.types.NoopObject
-import org.slf4j.LoggerFactory;
-
-import scala.collection.mutable.{ArrayBuffer, Buffer};
-
/**
* namespace is mutable because we may infer the namespace from the
relative path of the file
*
* @author alex...@google.com (Alex Eagle)
* @author toc...@gmail.com (Jeremie Lenfant-Engelmann)
*/
-class ClassDefinition (val name: String, var namespace: String, val
documentation: String) {
- val methods: Buffer[Method] = new ArrayBuffer[Method];
- val unittests: Buffer[Method] = new ArrayBuffer[Method];
- val modifiers: Buffer[Modifier.Value] = new ArrayBuffer[Modifier.Value];
- val imports: Buffer[String] = new ArrayBuffer[String];
-
- def resolveType(noopType: String): String = {
- imports.find((imp: String) => imp.split("\\.").last == noopType) match
{
- case Some(qualifiedType) => return qualifiedType;
- case None => return noopType;
- }
- }
-
- def findMethod(methodName: String): Method = {
- methods.find(method => method.name == methodName) match {
- case Some(method) => return method;
- case None => throw new NoSuchMethodException(
- "Method " + methodName + " is not defined on class " + name);
- }
- }
-
- def qualifiedName = if (namespace == "") name else namespace + "." +
name;
-}
+trait ClassDefinition
=======================================
--- /core/src/main/scala/noop/model/CompositeVisitor.scala Thu Dec 3
18:36:36 2009
+++ /core/src/main/scala/noop/model/CompositeVisitor.scala Thu Dec 10
22:06:44 2009
@@ -69,7 +69,7 @@
}
}

- def visit(method: Method) = {
+ def visit(method: MethodDefinition) = {
for (v <- visitors) {
v.visit(method);
}
=======================================
--- /core/src/main/scala/noop/model/ConcreteClassDefinition.scala Thu Dec
3 21:44:41 2009
+++ /core/src/main/scala/noop/model/ConcreteClassDefinition.scala Thu Dec
10 22:06:44 2009
@@ -15,7 +15,8 @@
*/
package noop.model

-import scala.collection.mutable.{ArrayBuffer, Buffer};
+import proto.Noop.{Method, ConcreteClass}
+import collection.jcl.Buffer

/**
* An AST element representing a concrete class. To the user, this is
a "class", but to us,
@@ -25,8 +26,13 @@
* @author Alex Eagle (alex...@google.com)
*/

-class ConcreteClassDefinition(name: String, namespace: String,
documentation: String)
- extends ClassDefinition(name, namespace, documentation) {
- val interfaces: Buffer[String] = new ArrayBuffer[String];
- val parameters: Buffer[Parameter] = new ArrayBuffer[Parameter];
-}
+class ConcreteClassDefinition(val data: ConcreteClass) extends
ClassDefinition {
+ def findMethod(methodName: String): MethodDefinition = {
+ val methods: Seq[Method] = Buffer(data.getMethodList());
+ methods.find((method: Method) => method.getSignature.getName ==
methodName) match {
+ case Some(method) => return new MethodDefinition(method);
+ case None => throw new NoSuchMethodException(
+ "Method " + methodName + " is not defined on class " +
data.getName);
+ }
+ }
+}
=======================================
--- /core/src/main/scala/noop/model/InterfaceDefinition.scala Thu Dec 3
21:26:31 2009
+++ /core/src/main/scala/noop/model/InterfaceDefinition.scala Thu Dec 10
22:06:44 2009
@@ -15,12 +15,11 @@
*/
package noop.model

+import proto.Noop.Interface
+
/**
* AST model element for an interface.
* @author Alex Eagle (alex...@google.com)
*/

-class InterfaceDefinition(name: String, namespace: String, documentation:
String)
- extends ClassDefinition(name, namespace, documentation) {
-
-}
+class InterfaceDefinition(val data: Interface) extends ClassDefinition
=======================================
--- /core/src/main/scala/noop/model/LoggingAstVisitor.scala Thu Dec 3
21:48:53 2009
+++ /core/src/main/scala/noop/model/LoggingAstVisitor.scala Thu Dec 10
22:06:44 2009
@@ -58,8 +58,8 @@
logger.info("Int literal");
}

- def visit(method: Method) = {
- logger.info("Method: " + method.name);
+ def visit(method: MethodDefinition) = {
+ logger.info("Method: " + method.data.getSignature.getName);
}

def enter(methodInvocationExpression: MethodInvocationExpression) = {
=======================================
--- /core/src/main/scala/noop/model/Module.scala Wed Dec 9 08:21:10 2009
+++ /core/src/main/scala/noop/model/Module.scala Thu Dec 10 22:06:44 2009
@@ -8,7 +8,7 @@

class Module(val name: String, val documentation: String) {
val concreteClasses: Buffer[ConcreteClassDefinition] = new
ArrayBuffer[ConcreteClassDefinition];
- val aliases: Buffer[Alias] = new ArrayBuffer[Alias];
+ val aliases: Buffer[AliasDefinition] = new ArrayBuffer[AliasDefinition];
val bindings: Buffer[BindingDefinition] = new
ArrayBuffer[BindingDefinition];
val interfaces: Buffer[InterfaceDefinition] = new
ArrayBuffer[InterfaceDefinition];
}
=======================================
--- /core/src/main/scala/noop/model/Visitor.scala Thu Dec 3 18:36:36 2009
+++ /core/src/main/scala/noop/model/Visitor.scala Thu Dec 10 22:06:44 2009
@@ -36,7 +36,7 @@

def visit(intLiteralExpression: IntLiteralExpression);

- def visit(method: Method);
+ def visit(method: MethodDefinition);

def enter(methodInvocationExpression: MethodInvocationExpression);

=======================================
--- /core/src/main/scala/noop/model/persistence/ClassRepository.scala Wed
Dec 9 08:21:10 2009
+++ /core/src/main/scala/noop/model/persistence/ClassRepository.scala Thu
Dec 10 22:06:44 2009
@@ -1,17 +1,18 @@
package noop.model.persistence;

-import noop.model.AstRoot;
-import noop.model.ClassDefinition;
-
-import java.io.InputStream;
+import noop.model.proto.Noop.ConcreteClass
+import com.google.protobuf.TextFormat
+import java.io.{InputStreamReader, InputStream}
+import noop.model.{ConcreteClassDefinition, ClassDefinition}
+

/**
* @author alex...@google.com (Alex Eagle)
*/
class ClassRepository {
- def getClassDefinition(stream: InputStream): ClassDefinition = {
- val astSerializer = new YamlAstSerializer();
- val root: AstRoot = astSerializer.deserialize(stream);
- return null;
- }
-}
+ def getClassDefinition(stream: InputStream): ConcreteClassDefinition = {
+ val builder = ConcreteClass.newBuilder();
+ TextFormat.merge(new InputStreamReader(stream), builder);
+ new ConcreteClassDefinition(builder.build());
+ }
+}
=======================================
--- /core/src/main/scala/noop/types/NoopObject.scala Fri Nov 13 16:27:54
2009
+++ /core/src/main/scala/noop/types/NoopObject.scala Thu Dec 10 22:06:44
2009
@@ -28,12 +28,12 @@

def nativeMethod(name: String): (Seq[NoopObject] => NoopObject) = {
throw new NoSuchMethodException("Native method implemention for '"
- + name + "' missing in " + classDef.qualifiedName);
+ + name + "' missing in " + classDef);
}

def executeNativeMethod(args: Seq[NoopObject], name: String): NoopObject
= {
return nativeMethod(name).apply(args);
}

- override def toString = classDef.name;
-}
+ override def toString = classDef.toString;
+}
=======================================
--- /interpreter/src/main/scala/noop/inject/GuiceBackedInjector.scala Thu
Dec 3 21:44:41 2009
+++ /interpreter/src/main/scala/noop/inject/GuiceBackedInjector.scala Thu
Dec 10 22:06:44 2009
@@ -21,8 +21,10 @@
*/


-import model.{ConcreteClassDefinition, ClassDefinition}
-import noop.interpreter.ClassLoader;
+import noop.model.{ConcreteClassDefinition, ClassDefinition}
+import noop.interpreter.ClassLoader
+import noop.model.proto.Noop.Property
+import collection.jcl.Buffer;
import noop.types.{NoopConsole, NoopObject};

import com.google.inject.AbstractModule;
@@ -32,18 +34,15 @@
// A pointer to the youngest child injector
var currentInjector: com.google.inject.Injector = injector;

- def getInstance(classDef: ClassDefinition): NoopObject = {
- val obj = classDef.qualifiedName match {
+ def getInstance(classDef: ConcreteClassDefinition): NoopObject = {
+ val obj = classDef.data.getName match {
case "noop.Console" => new
NoopConsole(classLoader.findClass("noop.Console"));
case _ => new NoopObject(classDef);
}

- if (classDef.isInstanceOf[ConcreteClassDefinition]) {
- val concreteClass = classDef.asInstanceOf[ConcreteClassDefinition];
- for (param <- concreteClass.parameters) {
- val paramClassDef =
classLoader.findClass(classDef.resolveType(param.noopType));
- obj.propertyMap += Pair(param.name, getInstance(paramClassDef));
- }
+ for (property: Property <- Buffer(classDef.data.getPropertyList())) {
+ val propClassDef = classLoader.findClass(property.getType);
+ obj.propertyMap += Pair(property.getName,
getInstance(paramClassDef));
}
return obj;
}
=======================================
--- /interpreter/src/main/scala/noop/inject/Injector.scala Thu Nov 12
22:16:59 2009
+++ /interpreter/src/main/scala/noop/inject/Injector.scala Thu Dec 10
22:06:44 2009
@@ -15,14 +15,16 @@
*/
package noop.inject;

-import noop.model.ClassDefinition;
-import noop.types.NoopObject;
+
+import noop.types.NoopObject
+import noop.model.{ConcreteClassDefinition, ClassDefinition};

/**
* @author alex...@google.com (Alex Eagle)
*/

trait Injector {
- def getInstance(classDef: ClassDefinition): NoopObject;
+ // TODO(alexeagle): should also be able to request an interface
+ def getInstance(classDef: ConcreteClassDefinition): NoopObject;
def withBindings(bindings: Map[String, NoopObject])(f: => Any): Unit;
}
=======================================
--- /interpreter/src/main/scala/noop/interpreter/Frame.scala Mon Oct 12
18:01:11 2009
+++ /interpreter/src/main/scala/noop/interpreter/Frame.scala Thu Dec 10
22:06:44 2009
@@ -18,14 +18,14 @@
import collection.mutable.{Map, Stack};
import org.slf4j.LoggerFactory;

-import model.Method;
-import types.{NoopType, NoopObject};
+import noop.model.MethodDefinition;
+import noop.types.{NoopType, NoopObject};

/**
* @author alex...@google.com (Alex Eagle)
* @author toc...@gmail.com (Jeremie Lenfant-Engelmann)
*/
-class Frame(val thisRef: NoopObject, val method: Method) {
+class Frame(val thisRef: NoopObject, val method: MethodDefinition) {
val blockScopes = new BlockScopes(new Stack[Map[String, Tuple2[NoopType,
NoopObject]]]());
val lastEvaluated = new Stack[NoopObject]();
val logger = LoggerFactory.getLogger(this.getClass());
=======================================
--- /interpreter/src/main/scala/noop/interpreter/InterpreterModule.scala
Wed Dec 9 00:03:18 2009
+++ /interpreter/src/main/scala/noop/interpreter/InterpreterModule.scala
Thu Dec 10 22:06:44 2009
@@ -16,7 +16,7 @@
package noop.interpreter;

import noop.model.{Visitor, CompositeVisitor, LoggingAstVisitor}
-import noop.model.persistence.{ClassRepository, YamlAstSerializer}
+import noop.model.persistence.{ClassRepository}

import noop.inject.{Injector, GuiceBackedInjector};

=======================================
---
/interpreter/src/main/scala/noop/interpreter/SourceFileClassLoader.scala
Wed Dec 9 00:03:18 2009
+++
/interpreter/src/main/scala/noop/interpreter/SourceFileClassLoader.scala
Thu Dec 10 22:06:44 2009
@@ -18,11 +18,10 @@
import collection.mutable.Map
import java.io.{InputStream, FileInputStream, File}
import org.slf4j.LoggerFactory
-import noop.model.persistence.{ClassRepository, YamlAstSerializer}
+import noop.model.persistence.{ClassRepository}
+import noop.model.{ConcreteClassDefinition, Parameter, ClassDefinition}


-import noop.model.{Parameter, ClassDefinition};
-
/**
* @author alex...@google.com (Alex Eagle)
* @author toc...@gmail.com (Jeremie Lenfant-Engelmann)
@@ -32,7 +31,7 @@
val logger = LoggerFactory.getLogger(classOf[SourceFileClassLoader]);
val cache = Map.empty[String, ClassDefinition];

- def getClassDefinition(file: File): ClassDefinition = {
+ def getClassDefinition(file: File): ConcreteClassDefinition = {
try {
getClassDefinition(new FileInputStream(file));
} catch {
@@ -41,7 +40,7 @@
}
}

- def getClassDefinition(stream: InputStream): ClassDefinition =
classRepo.getClassDefinition(stream);
+ def getClassDefinition(stream: InputStream): ConcreteClassDefinition =
classRepo.getClassDefinition(stream);

def findClass(className: String): ClassDefinition = {
if (cache.contains(className)) {
@@ -51,7 +50,7 @@
val expectedFile = parts.last + ".noop";
val relativePath = parts.take(parts.size - 1).mkString(File.separator);

- val classDef: ClassDefinition = searchInClasspath(relativePath,
expectedFile) match {
+ val classDef: ConcreteClassDefinition =
searchInClasspath(relativePath, expectedFile) match {
case Some(c) => c;
case None => searchInFilesystem(relativePath, expectedFile) match {
case Some(c) => c;
@@ -74,7 +73,7 @@
return classDef;
}

- def searchInClasspath(relativePath: String, expectedFile: String):
Option[ClassDefinition] = {
+ def searchInClasspath(relativePath: String, expectedFile: String):
Option[ConcreteClassDefinition] = {
val locationInClasspath = String.format("/%s/%s", relativePath,
expectedFile);
val stream = getClass().getResourceAsStream(locationInClasspath);
if (stream != null) {
@@ -84,7 +83,7 @@
return None;
}

- def searchInFilesystem(relativePath: String, expectedFile: String):
Option[ClassDefinition] = {
+ def searchInFilesystem(relativePath: String, expectedFile: String):
Option[ConcreteClassDefinition] = {
for (path <- srcPaths) {
val dir = new File(path, relativePath);
if (!dir.isDirectory()) {
@@ -111,7 +110,7 @@
}
}

- def eachClassInPath(dir: File, relativePath: String, f: ClassDefinition
=> Unit): Unit = {
+ def eachClassInPath(dir: File, relativePath: String, f:
ConcreteClassDefinition => Unit): Unit = {
for(file: File <- dir.listFiles()) {
if (file.isDirectory()) {
val newRelativePath = relativePath + file.getName() + ".";
Reply all
Reply to author
Forward
0 new messages