Beispiel #1
0
        public Expression TypeCheck(New @new, Scope scope)
        {
            var position = @new.Position;
            var typeName = @new.TypeName;

            var typedTypeName = (Name)TypeCheck(typeName, scope);

            var constructorType = typedTypeName.Type as NamedType;

            if (constructorType == null || constructorType.Name != "Rook.Core.Constructor")
            {
                LogError(CompilerError.TypeNameExpectedForConstruction(typeName.Position, typeName));
                return(@new);
            }

            var constructedType = constructorType.GenericArguments.Last();

            return(new New(position, typedTypeName, constructedType));
        }