Changelog between v0.8.2.2960 and v0.9.0.3203

Contributors to this release:

Avishay Lavie (21) Rodrigo B. De Oliveira (102) Cedric Vivier (109) Daniel Grunwald (1) Marcus Griep (4)


Avishay Lavie (21)
Generic parameter type inference for method invocations! Almost as good as C# 3.0's (slightly better in some ways), but without anonymous callable parameter type inference.
Merged incomplete but stable generic parameter constraints code (BOO-935) from generics-overloads branch into trunk.
Correct error message when generic method type inference fails + friendlier names for generic types and methods.
Allow generic methods to be overridden, even if the overriding method uses different names for generic parameters.
BOO-1031: prefer explicit interface implementations when resolving abstract methods, thus ensuring correct resolution if one is possible. Refactoring of ProcessInheritedAbstractMembers still required, though.
BOO-1032: Always resolve ambiguous member reference expressions by accessibility before taking further action.
BOO-1051: apply BOO-1031's fix to properties as well.
Added support for Visual Studio 2008.
CompilerContext is now a services registry. No more Context.TypeSystemServices.GenericsServices silliness, and much easier to introduce new services.
BOO-1047 and minor refactoring.
Fixed BOO-1076. Mapped methods on generic constructed types can now be generic methods themselves.
Added preliminary support for declaring and checking naked type constraints (type parameters that depend on other type parameters).
Added missing files from previous commit. (Whoops)
Fixed the first issue reported by Greg Nagel on BOO-935, where using a type as a base type constraint for a generic parameter before declaring it would cause a compiler error.
Fixed the second issue reported by Greg Nagel on BOO-935, where using constructor constraints on generic parameters would cause an internal compiler error.
Added support for recursive nested functions, fixing BOO-1085.
BOO-994: Support for generic extension methods.
BOO-1102: Support basic type inference for closures in simple method invocations, assignments, declaration statements and event subscriptions. Part one of many.
BOO-1102 and related changes. In particular, Boo finally got its very own TypeVisitor abstract class.
More of BOO-1102: Support closure signature inference from field declarations.
Added some testcases for using LINQ extension methods in Boo and fixed a stupid bug in GenericParameterInferrer.
Rodrigo B. De Oliveira (102)
BOO-1018 fix
BOO-1017 fix
bin update
GenerateFullPaths patch for MSBuild task by Torkel Odegaard (sorry for the missing umlaut)
BOO-1033 - fixed duck typed access of overloaded indexers
allow varargs handling to be treated differently (UnityScript)
bin update for UnityScript
refactored collections to use generic base type
warnings can be suppressed by subscribing to CompilerWarningCollection.Adding and cancelling the warning with args.Cancel()
Assembly.Location might not be available in certain scenarios (in the unity web player for instance)
bin update for unity
printer doesn't add space before constrain
BOO-1049 - meta methods should be able to return null
CompilerContext.Current
ThreadStatic variable must always be initialized
bin update
dont cache the type of the method for it might change after inference
harmless refactoring
bin update
splicing of a TypeDefinition in an expression context should yield a typeof expression of said definition
moved DefaultMember handling to NormalizeTypeAndMemberDefinitions where it makes more sense
BOO-969 - Cycle over attribute application and macro expansion until all are applied and expanded (within a fixed limit of iterations)
Parameters.MaxExpansionIterations is a better name
interpreter tests solution file
IEntityWithAttributes.IsDefined + refactored redundant code in internal entities to InternalEntity
macros anywhere in the module
keep quasiquote expressions pristine until macros have had a chance to look them
bin update
DynamicVariable should allow the initial value to be set
bin update
BOO-1068 - CodeSerializer was forgetting to serialize ExpressionStatement.Modifier
BOO-1073 - allow char() expressions
docstrings for macros
extract generic List<T> base class out of List and updated clients accordingly
bin update
mono gets a little confused with the Sort overloads
List.+ was broken when the array length didn't match the element count
bin update
macros at the module level should be expanded first
making test compatible with new parser which more closely apes python operator precedence
making GetGeneratorReturnType general enough for unityscript on .net-1.1
unityscript compatible version
bin update
auto lift Block to BlockExpression
bin update
BOO-1106 - object pattern matching - boo-extensions/src/Boo.PatternMatching => boo/src/Boo.Lang.PatternMatching
public key
BOO-1109 - NodeCollection.ExtendWithClones was not initializing the parent of each new node
BOO-1110 - method invocation pattern matching
pulled up DeclaringEntity to IType
bin update
either pattern (p1 | p2)
bin update
dont cache type information that relies on the ast because the ast might change
bin update
pattern matching support for bool literals
customizable name matching strategy
customizable name matching strategy
response file support
BOO-1086 - exception handler variables never outlive the scope of a single MoveNext invocation
customizable name matching strategy
custom IType bindings for System.Type
keep compiler generated class for closure variables close to their enclosing type
Merge branch 'useful'
quick fix for internal compiler error caused by explicitly typed closure arguments for generic method
BOO-1122
wrong syntax for anonymous exception
BOO-1121 - nestable macros; also changed TypeSystem.InternalMethod to no longer create a Unkown type reference for its ast node - code that relies on Method.ReturnType should be changed to TypeSystem.IMethod.
Boo.Lang.PatternMatching cleanup
Merge branch 'interpreter'
BOO-1120 - more test cases and a more disciplined approach to macro processing - first process all the external macros and then move on with the internal ones, as a result of that no code should depend on an immediate side effect of a macro application (I'm talking about BOO-1088)
moved macro processing classes to Boo.Lang.Compiler.Steps.MacroProcessing
bin update
file missing from last checkin
code pattern matching for macro statements
ignore empty blocks
Boo.Lang.PatternMatching reference needed for bootstrapping on .net
'event' should be usable as a member name
always expand macros from inside out no matter if they are internal or externals; this breaks internal nested macro support - to be fixed later
recursively expand macro replacements
bin update
parentMatch made unnecessary by the builtin nesting support for macros
minor refactoring
oops
some space
BOO-1121 - pattern matching support for macro definitions (still no otherwise support); introduced CustomStatement as a base class for ast node extensions - it makes writing macros that generate custom nodes more natural
0.9 for #develop release candidate
BOO-1121 - otherwise support
new file
BOO-1128 - macro should be able to contribute imports to the current module; Boo.Lang.PatternMatching now generates full type names for ast nodes (thus alleviating the need for imports)
naming conventions
naming convetions
naming convetions
0.9 update
final 0.9
IAstVisitor.cs and NodeType.cs are always completely generated
initial work on BOO-415 - class macros. Macros can now appear wherever a type member is expected. Members yielded by the macro will be inserted in the enclosing type definition at the macro application location. Attributes and modifiers of the macro application are propagated to each yielded member. If such a macro application also yields statements they are guaranteed to execute at object initilization in the expected declaration order. For consistency with the way macros are handled in method bodies the support for macros in class definitions demands a breaking change in the way fields are declared, in particular, a standalone identifier in a class body no longer means a field declaration with type omitted and instead means a macro application, a suitable error message has been introduced. The indexed property declaration syntax using parenthesis is being deprecated and it will be removed in a future release.
nonsense
integration tests for macro producing generic members revealed a bug in the way internal generic methods were being setup; moved import used information to annotations;
removed some duplication from PMB caching logic
documented the assumption that TypeSystemServices xxxType fields are mutable with a test case
0.9
Cedric Vivier (109)
BOO-1019 : Do not emit 'beforeFieldInit' when type has a static constructor.
static constructors must be private.
BOO-1021 : Automatically set protected member in a final/sealed type as private
BOO-1020 : Inplace-XOR operator crashes compiler
bah
booish: leaner logo (just remind about /help instead of showing it everytime) + better help message
nullables:
BOO-1030 : smart indentation in booish
apply [AttributeUsage] on our attributes.
nanorc: fix sealed=>final
add (ignored) testcases for BOO-1031 for the brave hearts.
avoid instantiating a TraceSwitch when not in verbose mode.
add some (working) tests for and/or ops.
Boo bisecting tool... or how to quickly find the cause of newly introduced regressions while drinking a good coffee/tea :)
introduce handy $BOOC_OPTIONS/$BOOI_OPTIONS/$BOOISH_OPTIONS to wrapper scripts.
avoid compiling the whole testsuite when 'fixture' is defined.
oops
BOO-1021 reloaded :
do not repeat run-time exceptions.
BOO-1042 : Invalid IL generated when ctor calls an instance method before self() or super()
BOO-1040 : Calling a constructor overload calls $initializer$ again
BOO-1045 : Warn when object.Finalize() is overriden, suggest using destructor syntax instead
BOO-1054 : No BCW0004 warning "rhs of `is` is a type reference" when it is a generic type reference.
boo does not compile on mono since rev. 3006, workaround to compile anyways.
basic bash completion script for booc.
support <embed> fileset in booc nant task.
BOO-1088 : Built-in deadlock detector helper (define DEADLOCK_DETECTOR)
rename the symbol to enable deadlock detection helper to LOCK_TIMEOUT.
BOO-1077 : New style macros. Awesome enumerable macros.
Friendlier error message for BCE0101.
Add a public overload on Node.GetAncestor to search within a limited depth.
BOO-1083 : Support quasi-quotes (QQ) in booish.
Do not crash in the event StringLiteral.Value is null.
- rename *EnumerableMacro to *GeneratorMacro.
Avoid throwing basic exception in macro-generated code.
BOO-1090 : Allow specific types for getter/property.
do not crash if TrueBlock (or FalseBlock) is null in an IfStatement.
BOO-1091 : Possibility to change default visibility settings
Add a constructor overload with CompilerContext argument on AbstractCompilerComponent and derived *Macro classes.
Issue BCW0014 for unused internal members too. (except if there is at least one [InternalsVisibleTo])
Add [CompilerGeneratedAttribute] on uninteresting method in generator macros.
- make CompilerGeneratedExtensions 'private static' instead of 'public'.
Add [CompilerGeneratedAttribute] to callable definition classes.
- BOO-1094 : Property accessor visibility is not checked nor emitted separately, aka support for assymmetric accessor accessibility.
add checked attribute to <booc> NAnt task
BOO-1006 : String interpolation formatting (ie. "${0.42:f4}" >> "0.4200")
Forgot to also change wsaboo.g. Lazily cache string.Format's MethodInfo.
add nullity check on macro's Expand* argument
make structs work consistently with Context.Default(member)Visibility.
Normalize*Index optimization. It gives ~30% perf improvement on both Mono and .NET.
Improve BCE0019's suggestions on properties. Suggest "Foo" instead of "get_Foo" when developer mistakenly wrote .GetFoo() instead of .Foo
RuntimeServices.cs: ahem. the second Math.Max when index<0 is obviously superfluous
make .deb install new PatternMatching assembly into the GAC.
BOO-1111: local reuse in for loop context
BOO-1089: do not unnecessarily initialize fields to default values
BOO-1024: Calling method with nullable parameter with a literal generates invalid IL
BOO-1112: Inefficient IL for unary negations (especially negative floating-point literals)
add missing primitives sbyte,short,ushort in the nanorc syntax file
add more tests to unary negation testcase
BOO-815: except clause variable names are not being checked by the compiler
BOO-1113: Ensure all exception handlers can be reached
BOO-950: Automatic stub creation for non-implemented properties too.
BOO-952: Remove all handlers attached to an event with 'SomeEvent = null'
html changelog generator, useful for publishing/archiving/linking online full changelog between versions [not only wrt jira].
BOO-1116: BCE0090 not fired when reducing accessibility of a derived method from 'internal' to 'private'
BOO-1027 & BOO-1095 : unable to override methods with byref parameter(s)
BOO-1117: Allow compilation for Silverlight profile
do not issue a false stub created warning (that actually does nothing except warn) when class implements a setter when base class only has getter (or the other way around).
nested macros (BOO-1120): allow reference to parent macro(s) by name
add missing lifts
add missing license headers
BOO-1123: WARNING: Assignment/Comparison made to/with same expression.
add silverlight example by Vladimir Lazunin in examples/
BOO-1124: yieldAll : allow multiple enumerable arguments
generator macros shorthand: 'yield' (ie. implicit 'yield null') means 'yield `macro.Block`'.
rename enumerable-macro-* tests to generator-macro-*
BOO-1127: Invalid IL when a static final 'literal' field is assigned to in static constructor
BOO-1087: WARNING: Expression is constant (always true or always false).
add missing testcases for BCW00(20|21)
handle 'enum' consistently wrt modifiers static/final/abstract/partial => error
BCW0022 - warn about implicit *external* callables too in boolean context.
BCW0022 - change text to "WARNING: Boolean expression will always have the same value."
BOO-1078: Cannot use enumerations as attribute parameters.
BOO-1130: Cannot produce or consume long enum
remove leftover
BOO-1125: Warning suppression/promotion options
use the supported way of detecting Mono
BOO-1115: Strict Mode (only changes default visibility for now, strict-mode-specific warnings to follow)
add new options to booc's man.
fix broken xml pipeline : thrown with ExceptionHandlerFlags and other enums when combined (because [Flags] not present)
update generated files (should not we remove them from svn? if not why these are here and some other enums are not?)
support quasiquote expression xml serialization
remove generated Ast/ files from repository. generated them as *.Generated.cs instead.
obsolete MacroStatement.Block, use Body instead. introduce INodeWithBody for methods, macros and blocks.
simpler more consistent Parameters Warnings API (ie. Enable/Disable/Reset instead of Suppress/Restore/Promote/Revoke)
automatically reference Boo.Lang.Compiler when defining a macro through "macro: syntax".
BOO-703: Compiler warning on implicit return statement (enabled in strict mode OR individually through Parameters.EnableWarning)
BOO-1132: WARNING: Visible method|property does not declare return|argument type explicitely
BOO-1133: WARNING: Variable 'X' has the same name as a field of base type 'T'. Did you mean to use the field?
small reorganization of MacroMacro: move PatternMatching-related stuff in its own #region
do not fire BCW0014 (Private member never used) for explicit interface implementations members.
BOO-1129: WARNING: Likely typo in type member name 'contructor'. Did you mean 'constructor'?
BOO-989: Possibly suggest alternative when a function marked with 'override' doesn't override anything
add bool/macro and QQ-markers in syntax file
support -D:fixture for 'compile' task, test $fixture before compiling PatternMatching tests.
TypeSystemServices: ensure builtin types are set once in the lifetime of TSS, split _entityCache into _typeCache and _memberCache
quick&dumb refactoring of PMB's method cache. fixes TSS leaks between CompilerContexts using same Pipeline.
BOO-1035: empty strings are considered true in a bool context + BOO-1135: Wrong op_Implicit behavior
improve changelog generator
Daniel Grunwald (1)
MSBuild tasks for MSBuild 3.5
Marcus Griep (4)
More complete binary operator support
Typo Fix
Update the authors file
Allow for compilation of internal macros that are subclasses of other internal macros.