`head -n 9 ChangeLog`
[mono.git] / mcs / class / Microsoft.JScript / Microsoft.JScript / ChangeLog
index 4aa5860bd6e69a3fa348369634e29f52ef064130..63b5b78f38a7ff842a23eaa45ef3144d5b91d07c 100644 (file)
@@ -1,5 +1,446 @@
+2005-05-07  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * MethodInvoker.cs, ScriptObject.cs, BitwiseBinary.cs,
+       ActivationObject.cs, PostOrPrefixOperator, StackFrame.cs,
+       NumericUnary.cs, JSConstructor.cs, Equality.cs, NumericBinary.cs,
+       Convert.cs, LateBinding.cs, Plus.cs, BitwiseBinary.cs,
+       JSMethodInfo.cs, Relational.cs, ScriptFunction.cs : Add missing
+       debugger attributes.
+
+2005-05-06  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Binding.cs: add missing methods and fields.
+
+2005-05-03  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * ReturnOutOfFinally.cs, SyntaxErrorObject.cs, TypeReflector.cs,
+       JSPrototypeObject.cs, ReferenceErrorObject.cs, Namespace.cs,
+       expression.cs (Unary class), Binding.cs, ArrayWrapper.cs,
+       CmdLineOptionParser.cs, TypeErrorObject.cs, JSConstructor.cs,
+       TypedArray.cs, FunctionWrapper.cs, SuperTypeMembersSorter.cs,
+       ContinueOutOfFinally.cs, BlockScope.cs,
+       AssemblyCustomAttributeList.cs, VersionableAttribute.cs,
+       SimpleHashtable.cs, ResInfo.cs, Import.cs,
+       NotRecommendedAttribute.cs, CmdLineException.cs, DebugBreak.cs,
+       VBArrayObject.cs, CmdLineError.cs, TODOAttribute.cs,
+       RegExpMatch.cs, JScriptCodeProvider.cs, RangeErrorObject.cs,: Fixes for API compliance.
+
+2005-04-28  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * BinaryOp.cs, ActivationObject.cs, expression.cs (Args),
+       ArrayLiteral.cs, ArrayObject.cs, IRedirectOutput.cs, ASTList.cs,
+       IVsaScriptScope.cs, ast.cs (AST), BinaryOp.cs,
+       EnumeratorObject.cs, BreakOutOfFinally.cs, Enum.cs,
+       FormalParameterList.cs, FunctionDeclaration.cs, Equality.cs,
+       Closure.cs, Block.cs, Statement.cs, BooleanObject.cs,
+       LenientBooleanPrototype.cs, GlobalObject.cs, BooleanPrototype.cs,
+       CodeGenerator.cs, LenientDateConstructor.cs,
+       LenientGlobalObject.cs, JSToken.cs, MethodInvoker.cs,
+       LenientRegExpPrototype.cs, NumericUnary.cs,
+       LenientArrayPrototype.cs, JSParser.cs, JSPropertyInfo.cs,
+       LenientVBArrayPrototype.cs, LenientStringPrototype.cs,
+       LenientObjectPrototype.cs, With.cs, ScriptBlock.cs, Expando.cs,
+       JSScanner.cs, LenientEnumeratorPrototype.cs, EvalErrorObject.cs,
+       VariableDeclaration.cs, Print.cs, LenientErrorPrototype.cs,
+       LenientBooleanPrototype.cs, LenientFunctionPrototype.cs, Literal.cs,
+       LenientMathObject.cs, LenientDatePrototype.cs,  Relational.cs,
+       Parser.cs, Throw.cs, VariableStatement.cs, RegExpObject.cs, Eval.cs,
+       SemanticAnalizer.cs, LenientStringConstructor.cs,
+       LenientNumberPrototype.cs, FieldAccessor.cs : Changes for MS API
+       compliance. 
+
+2005-04-18  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Parser.cs: Build a StrictEquality object instead of a Equality
+       object, when we have === and !=== as operator.
+       * CodeGenerator.cs: (ft_emit_equality, fall_true) Take into account the
+       strict cases of equality. 
+       * StrictEquality.cs: Add parent, left and right params to default
+       ctr. Implement Resolve and Emit.
+
+2005-04-15  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Statement.cs: make internal the builders.
+       * expression.cs: (Identifier.Emit) Take into account if its
+       binding is of type Catch.
+
+2005-04-14  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * SemanticAnalizer.cs: Added a Hashtable that indicates which
+       methods need to generate proper code for handling the local vars
+       in the StackFrame. Added method AddMethodWithEval, MethodContainsEval.
+
+       * Eval.cs: Back to M.J.
+
+       * ast.cs: locals from abstract class Function is now an array of
+       objects not just AST's.
+
+       * CodeGenerator.cs: Clean up fall_true, better using recursion :)
+       Added static method load_local_vars. At method ft_emit_equality do
+       Emit the code of the ast. Added method load_local_vars.
+
+       * FunctionDeclaration.cs: Update call to TypeManager methods to
+       new API. Added a check for invocations to 'eval' inside functions
+       so StackFrame IL code gets generated. Build the function's closure
+       take the need for the StackFrame into account.
+       
+       * TypeManager.cs: renamed IdentificationTable locals to
+       local_script_functions, AddLocal to AddLocalScriptFunction,
+       GetLocal to GetLocalScriptFunction. Added method CurrentLocals.
+
+       * IdentificationTable.cs: Method CurrentLocals now returns
+       an array of object's not AST's.
+
+       * expression.cs: (class Call) Check if we have a call to 'eval',
+       if so we must keep up the StackFrame which contains the local
+       vars. We generate special code that handles the StackFrame with
+       the local vars in order to keep them in sync. When a function
+       contains an invocation to 'eval' even when such function is a
+       function declared in the code we do not perform a direct method
+       call to it when invoked instead a call through late binding gets
+       performed. Added methods IsEval, set_local_vars. Implement 'eval'
+       from JScript!
+
+2005-04-10  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * StackTrace.cs: Back to M.J namespace.
+
+2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * Literal.cs: fix the build and broke something else ;-).
+
+2005-04-08  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Literal.cs: Implement the construction of regular expression literal.
+       * Parser.cs: Pass the proper parent to RegExpLiteral.
+
+2005-03-30  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * TypeOf.cs: take into account Objects.
+       * ArrayConstructor.cs: Implement CreateInstance.
+       * LateBinding.cs: Initial implementatio of CallValue and
+       SetIndexedPropertyValueStatic.
+       * JSFieldInfo.cs: Implement GetValue and SetValue.
+       * ArrayObject.cs: Implement length, add three ctrs.
+       * JScriptException.cs: Add error_number field. Implement
+       ctr. ErrorNumber, Message and StackTrace.
+       * ArrayPrototype.cs: Implement join and toString.       
+       * JSObject.cs: Remove the ChainHash, we use a simple hashtable
+       now, the one inherited from ScriptObject.
+       * ScriptObject.cs: Add a Hashtable here.
+
+2005-03-29  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * GlobalScope.cs: Set parent and engine in ctr. Return 'this' for
+       GetDefaultThisObject.
+       * ScriptObject.cs: Added protected 'parent' field of type
+       GlobalScope.
+
+2005-03-16  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * FunctionExpression.cs: Update to TypeManager new API.
+
+       * TypeManager.cs: Keep both MethodBuilder and LocalBuilder around.
+
+       * FunctionDeclaration.cs: In some contexts we need the
+       MethodBuilder and LocalBuilder, so we must keep both around.
+
+       * expression.cs: (load_script_func) Take care if bounded variable
+       was declared in a nested context. (emit_create_instance) Handle
+       the FunctionConstructor case.
+
+2005-02-28  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * ForIn.cs: Initial implementation of ForIn stm.
+
+2005-02-27  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * VariableStatement.cs (PopulateContext): Do not add the symbol to
+       the context if already defined in current context.
+
+       * CodeGenerator.cs: Renamed VariableDefined to variable_defined_in_current_scope.
+
+       * TypeManager.cs: Reimplemented it, We use an IdentificationTable
+       instead of a simple Hashtable so we can handle scopes
+       properly. Cleaner api.
+
+       * VariableDeclaration.cs: Use new CodeGenerator api. (EmitDecl)
+       Add the builders to the TypeManager.
+
+       * Block.cs: Use new TypeManager api.
+
+       * FunctionDeclaration.cs: Use new TypeManager api. Take care of
+       scopes in the TypeManger on Emit.
+
+       * IdentificationTable.cs: (Binder) Changed the type of value from
+       AST to object so I can use this symbol table
+       anywhere. (IdentificationTable) Add current_locals stack and added
+       method InCurrentScope. 
+
+       * expression.cs: Use new api from TypeManager, Add casts where neeeded.
+
+       This solves an infinite loop we were falling into when calling
+       IdentificationTable.CurrentLocals when repeated declarations where
+       inside function declarations.
+       
+       * ast.cs: Added protected field ig to class Function.
+       * Block.cs: Emit function's body in a later phase since free
+       ocurrences of functions - at the same level of it - can be handled
+       properly, since they must be defined and inited to the correct values.
+       * FunctionDeclaration.cs: Renamed Emit to create_closure. And make
+       Emit only generate the code of the body.
+
+       Fixes #73078.
+
+2005-02-22  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Block.cs: Report error JS5040. Reopened #72674, see last comment of it.
+
+       * CodeGenerator.cs: Added method VariableDefined.
+       
+       * TypeManager.cs: Added method SetMethod.
+       
+       * VariableDeclaration.cs (EmitDecl): Added logic to allow multiple
+       declarations of the same var. Fixes #72674.
+       
+       * Block.cs: Added hashtable ocurrences. It holds the index of the
+       previous declaration which after encountering another one with the
+       same name gets nuked.
+
+       * FunctionDeclaration.cs: Added logic for allowing multiple
+       declaration of methods with the same name. Fixes #72674.        
+
+       * expression.cs (Args): Added field func. Holds a reference to the
+       Function which to the args are being passed. Use it to track the
+       proper number of arguments for the call. 
+
+2005-02-20  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs (Args.Emit): check if num_of_args is -1.
+       * ast.cs (Function.NumOfArgs): avoid using a null pointer. In the
+       code generation phase if num_of_args is -1 means the actual
+       arguments are the desired number of args. Fixes #72697.
+
+       * Parser.cs: Pass proper parent.
+       * CodeGenerator.cs: added emit_get_default_this.
+       * Literal.cs (This) : Resolve and Emit implemented. Fixes #72477
+       * expression.cs: (emit_late_get_or_set) use
+       load_engine. (load_script_func) Ensure that TypeManager has a ref
+       to the local otherwise it's a field. (New.Resolve) Check if late
+       binding is needed. (New.Emit) Generate proper IL that make use of
+       late binding  when the id of the constructor it's not part of the
+       build in objects.
+
+2005-02-14  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * Token.cs, TokenStream.cs, Parser.cs: make this classes internal.
+
+       * Context.cs: delete wrongly exposed ctr.
+
+2005-02-10  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs: use InFuntion in proper places.
+
+       * Parser.cs: Add parameter that indicates if it's a prefix
+       operator. When building the MemberExprTail set to proper parent.
+       * PostOrPrefixOperator.cs: Partial implementation of ++ and --,
+       prefix and suffix, we assume that the operand is a variable.
+
+2005-02-09  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs: Added method EmitStore and EmitLoad to Identifier
+       class. Implemented op= operators. Fixes 72393.
+
+2005-02-08  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs (Identifier.Emit): Handle case where we are
+       assigning to a formal parameter. Fixes #72333.
+
+2005-02-06  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs: (load_script_func) Load localbuilder in an
+       invocation when needed, this let us have higher order functions,
+       which is lovely (Fixes #71129). Update calls to load_engine to new signature. 
+       * FunctionDeclaration.cs: Add LocalBuilder to TypeManager.locals
+       * Statement.cs: Changed ctr to Init, so we can track correctly the
+       parent hierarchy when building the ast of the program.
+       * TypeManager.cs: Added field locals. Factored code for
+       handling the tables. Added enums ManagedType and Operation.
+       * Parser.cs: Track correctly the parent of return.
+       * ast.cs (class Function): add ScriptBlock as possible parent of a
+       global expression.
+       * CodeGenerator.cs: change signature of load_engine. Instead of a
+       AST a boolean. So we can call it with InFunction as parameter.
+
+2005-02-05  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * expression.cs: rework the late binding algorithm, we directly
+       call an object's method if it's a static method of it. Added field
+       late_bind, properties AccessField and Binding, renamed emit_access
+       to emit_array_access to class Binary. Added fields params_info,
+       late_bind and var_args to Class Args; also methods has_var_args,
+       force_strong_type, reworked its Emit code, we take care of methods
+       which have variable number of arguments, take care of needed
+       conversions and boxing when the call has specific strong types as
+       formal parameters. Added method IsPrint and property Parameters to
+       class BuiltIn.
+       * IdentificationTable.cs: Better implementation of jscript's
+       environments semantics. Added classes Symbol and Binder.
+       * SymbolTable.cs: Nuked.
+       * Block.cs: Fix the semantic of semantic analysis and code
+       generatipo process, we now allow forward declarations of variables
+       and functions.
+       * FunctionDeclaration.cs: Added default ctr and Init method. Fix
+       the semantics of the Resolve and Emit process, we can have forward
+       declaration of variables and functions. Fix order in which
+       JSLocalField's get build.
+       * FunctionExpression.cs: Fix order in which JSLocalField's get build. 
+       * VariableStatement.cs: Added methods EmitVariableDecls and PopulateContext.
+       * VariableDeclaration.cs: Added method EmitDecl. Delay the Resolve
+       and Emit process until the second phase.
+       * Statement.cs: Resolve process of For class take care of
+       VariableStatements for populating the environment in advance.
+       * TypeManager.cs: Make GetMethod return a MethodBuilder.
+       * ast.cs: Added field locals, property NumOfArgs, method GetName
+       to abstract class Function.
+       * SemanticAnalyser.cs: unified global environment and the stack of
+       contexts. Added field global_obj, adapt methods to new
+       IdentificationTable api. Delete method ObjectSystemContains. Added
+       method contains, is_js_object, object_contains_method, map_to_ctr,
+       get_member.
+       * Try.cs: Update to new IdentificationTable api.
+       * ScriptObject.cs, JSPropertyInfo.cs, FormalParameterList.cs,
+       JSFieldInfo.cs, JSMethodInfo.cs, JSLocalField.cs,
+       ScriptFunction.cs: use full namespace name for Binder.
+
+2005-01-17  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * CodeGenerator.cs: Added load_engine.
+       * expression.cs (emit_func_call), FunctionDeclaration.cs: Fix
+       computation of VsaEngine.
+
+2005-01-11  Cesar Lopez Nataren  <cnataren@novell.com>
+
+       * StringConstructor.cs: implement CreateInstance.
+
+2005-01-10  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * BooleanPrototype.cs: update to assert_type.
+       * SemanticAnalizer.cs: move BooleanPrototype.AssertType here, rename it to assert_type.
+
+2005-01-06  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * BooleanObject.cs: implement ctr's.
+       * BooleanPrototype.cs: back to M.J namespace. Implement contructor
+       property, toString and valueOf, add AssertType.
+
+       * Convert.cs: add ToString overload and implement.
+
+       * JSFieldInfo.cs, JSLocalField.cs: Add conditional NET_2_0 or BOOTSTRAP_NET_2_0 's
+       Mono_GetGenericFieldDefinition.
+
+       * StringObject.cs: add ctrs.
+
+2005-01-05  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * ObjectPrototype.cs: Add internal ctr. Implement hasOwnProperty.
+       * ObjectConstructor.cs: implemented CreateInstance.
+       * expression.cs (emit_create_instance): add Boolean case.
+       * Try.cs, Statement.cs (EmitStms), Literal.cs
+       (ObjectLiteralItem.Emit), CodeGenerator.cs (fall_false): delete
+       unused variables.
+
+2004-12-15  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * CodeGenerator.cs: add support for compiling not only from cwd.
+
+2004-12-13  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * expression.cs: emit code for null literal.
+
+2004-12-06  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * expression.cs: added StringConstructor case.
+
+       * MemberInfoList.cs: added internal classes Node, ListIter,
+       ChainHash and implement MemberInfoList.
+       * JSObject.cs: implement AddField, AddProperty, AddMethod,
+       GetMembers, RemoveMember, GetEnumerator, add ChainHash's ext
+       field.
+       
+
+2004-11-30  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * *Prototype.cs: return constructor.
+
+2004-11-25  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * GlobalObject.cs: return the different kinds of object's
+       constructors.
+       * DateConstructor.cs, StringConstructor.cs, ObjectConstructor.cs,
+       NumberConstructor.cs, VBArrayConstructor.cs,
+       FunctionConstructor.cs, EnumeratorConstructor.cs,
+       BooleanConstructor.cs, ArrayConstructor.cs, RegExpConstructor.cs,
+       ActiveXObjectConstructor.cs : added default constructor and static
+       contructor field.       
+       * ErrorConstructor.cs: added default and discriminatory ctrs. Let
+       us know which type of error we are.
+       * DateObject.cs: add field that hold the millisecond representation of date.
+       * JSError.cs, JScriptException.cs: back to Microsoft.JScript namespace.
+       * DatePrototype.cs: add default ctr.
+       
+       * MathObject.cs: implement its methods.
+
+2004-11-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * DateConstructor.cs: runtime support, ported parse method from Rhino.
+
+2004-11-22  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * CodeGenerator.cs: (ff_emit_relational) receive a full
+       EmitContext as parameter. Added
+       ff_emit_equality_cond. (fall_false) take where of the case where
+       an expression is received.
+       
+       * Parser.cs: use ToJSToken for building the Relational
+       object. Map relational Token's to JSToken's.
+       * expression.cs: Added Size property to class
+       Expression. (emit_create_instance): Added Number code generation. 
+
+       * Relational.cs (Emit): fix typo, emit boxing to boolean.
+
+2004-11-19  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * NumericBinary.cs: implement EvaluateNumericBinary.
+
+2004-11-15  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * CodeGenerator.cs: factor code for fall_true/fall_false (add
+       emit_default_case, ft_binary_recursion, ft_emit_equality,
+       ff_emit_relational, ff_binary_recursion). Fix
+       trouble with logical ops code generation.       
+
+2004-11-12  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * TypeOf.cs, Plus.cs, Equality.cs:  implementation of
+       JScriptTypeOf, EvaluatePlus, EvaluateEquality.
+       * Convert.cs (ToString): use the IConvertible/TypeCode approach
+       for convertions. Add GetTypeCode.
+
+       * Parser.cs, expression.cs: discriminate among =, +=, -=, etc. Add overload of
+       ToJSToken.
+
+2004-11-10  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
+
+       * expression.cs (emit_late_call): Pop after Call or CallValue when
+       needed. (New.Emit) add emit_create_instance.
+       
+
 2004-11-08  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
 
+       * expression.cs (class New): add new operator support. Add
+       emit_args, implemented Emit.
+
        * expression.cs: emit unary operator code.
        * TypeOf.cs: back to Microsoft.JScript namespace. fix typo.
        * Literal.cs: constrain more the case of negative numeric literal.