Fix bug in BetterConversion and in ConvertImplicit
[mono.git] / mcs / mcs / ChangeLog
index 06b0fb43378839ea4bd861737747716993c88a76..63c93928e6608ebe12f98134bc5a3086e46cdbbb 100755 (executable)
@@ -1,5 +1,65 @@
+2001-09-27  Ravi Pratap  <ravi@ximian.com>
+
+       * expression.cs (Invocation::BetterConversion): Fix to cope
+       with q being null, since this was introducing a bug.
+
+       * expression.cs (ConvertImplicit): Do built-in conversions first.
+
+2001-09-27  Ravi Pratap  <ravi@ximian.com>
+
+       * expression.cs (UserImplicitCast::Resolve): Fix bug.
+
+2001-09-27  Ravi Pratap  <ravi@ximian.com>
+
+       * class.cs (TypeContainer::AddConstructor): Fix a stupid bug
+       I had introduced long ago (what's new ?).
+
+       * expression.cs (UserImplicitCast::CanConvert): Static method to do 
+       the work of all the checking. 
+       (ConvertImplicit): Call CanConvert and only then create object if necessary.
+       (UserImplicitCast::CanConvert, ::Resolve): Re-write.
+
+       (Unary::Operator): Rename Add and Subtract to Addition and Subtraction because
+       that is the right way. 
+
+       (Invocation::MakeUnionSet): Convenience function to make unions of sets for 
+       overloading resolution. Use everywhere instead of cutting and pasting code.
+
+       (Binary::ResolveOperator): Use MakeUnionSet.
+
+       (UserImplicitCast::CanConvert, ::Resolve): Update to take care of the case when 
+       we have to convert to bool types. Not complete yet.
+       
+2001-09-27  Miguel de Icaza  <miguel@ximian.com>
+
+       * typemanager.cs (TypeManager::CSharpName): support ushort.
+
+       * expression.cs (Expression::TryImplicitIntConversion): Attempts
+       to provide an expression that performsn an implicit constant int
+       conversion (section 6.1.6).
+       (Expression::ConvertImplicitRequired): Reworked to include
+       implicit constant expression conversions.
+
+       (Expression::ConvertNumericExplicit): Finished.
+
+       (Invocation::Emit): If InstanceExpression is null, then it means
+       that we perform a call on this.
+       
 2001-09-26  Miguel de Icaza  <miguel@ximian.com>
 
+       * expression.cs (Unary::Emit): Remove some dead code.
+       (Probe): Implement Resolve and Emit for `is'.
+       (Expression::ConvertImplicitRequired): Attempt to do constant
+       expression conversions here.  Maybe should be moved to
+       ConvertImplicit, but I am not sure.
+       (Expression::ImplicitLongConstantConversionPossible,
+       Expression::ImplicitIntConstantConversionPossible): New functions
+       that tell whether is it possible to apply an implicit constant
+       expression conversion.
+
+       (ConvertNumericExplicit): Started work on explicit numeric
+       conversions.
+
        * cs-parser.jay: Update operator constants.
 
        * parameter.cs (Parameters::GetParameterInfo): Hook up VerifyArgs