* Expression.cs (Parse): Don't change '/' to '\\', not required.
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / ChangeLog
1 2009-10-02  Ankit Jain  <jankit@novell.com>
2
3         * Expression.cs (Parse): Don't change '/' to '\\', not required.
4
5 2009-10-01  Ankit Jain  <jankit@novell.com>
6
7         * Project.cs (AddImport): Show the correct source file name, when
8         the import is in the main project file.
9
10 2009-10-01  Ankit Jain  <jankit@novell.com>
11
12         Fix bug #543299.
13         * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
14         the full path of the imported project here itself, instead of ..
15         (Evaluate): .. here.
16         * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
17         (Contains): New.
18         * Project.cs (AddImport): Don't process if condition is false.
19         Warn if a circular reference is detected, and ignore the import.
20
21 2009-09-29  Ankit Jain  <jankit@novell.com>
22
23         * GroupingCollection.cs (Evaluate): Mark internal.
24         * Project.cs (AddImport): Only evaluate the properties,
25         till before the import.
26
27 2009-09-29  Ankit Jain  <jankit@novell.com>
28
29         * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
30         the project xml, as returned Xml*Reader normalizes the newlines.
31         Instead directly use the TextReader with XmlDocument.Load ().
32
33 2009-09-27  Ankit Jain  <jankit@novell.com>
34
35         * ConditionParser.cs: Show the condition being parsed in the
36         exception message.
37
38 2009-09-26  Ankit Jain  <jankit@novell.com>
39
40         * Expression.cs: Allow '-' in item, property and metadata names.
41
42 2009-09-26  Ankit Jain  <jankit@novell.com>
43
44         * Project.cs (Evaluate): Split into this and ..
45         (PrepareForEvaluate): .. this.
46         (AddImport): Evaluate the current set of properties/items etc,
47         before processing the imported project. Honor the Condition
48         for the Import.
49         (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
50         property.
51         * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
52         * BuildItemGroup.cs (Evaluate): Evaluate only once.
53         * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
54
55 2009-09-26  Ankit Jain  <jankit@novell.com>
56
57         * Project.cs: Get InitialTargets from the imported projects also.
58         The combined list of targets are executed, in the order they were
59         found.
60         DefaultTargets are also read in from imported projects, and the first
61         non-empty DefaultTargets found is used.
62
63 2009-09-25  Ankit Jain  <jankit@novell.com>
64
65         * Project.cs (BuildTarget): Handle skipped targets.
66
67 2009-09-25  Ankit Jain  <jankit@novell.com>
68
69         * Project.cs (DoLoad): If a VS2003 project is detected, then throw
70         InvalidProjectFileException with useful error.
71
72 2009-09-24  Ankit Jain  <jankit@novell.com>
73
74         * Project.cs (Load): Emit the .sln.proj file only if env var
75         XBUILD_EMIT_SOLUTION is set.
76
77 2009-09-24  Ankit Jain  <jankit@novell.com>
78
79         * Project.cs (GetKeyForTarget): Make target name, case insensitive.
80
81 2009-09-24  Ankit Jain  <jankit@novell.com>
82
83         * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
84         reserved property.
85
86 2009-09-10  Ankit Jain  <jankit@novell.com>
87
88         * BuildItem.cs (Evaluate): Metadata from "Include" should be,
89         preserved, so use ConvertTo ITaskItem, rather than string.
90         Ensure that the new items have the metadata from references _in_
91         Include, and the metadata of _this_ builditem.
92         * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
93         (MatchedFilenames): Rename to ..
94         (MatchedItems): .. this, and change type of array of ITaskItem.
95         Ensure that metadata of items in Includes are retained in the
96         final matched items.
97
98         * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
99         param. If separator is present, then just return a "Join'ed"
100         string as the single task item.
101         * ItemReference.cs: Track api changes.
102
103         * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
104         as we need separate task items.
105
106 2009-09-01  Ankit Jain  <jankit@novell.com>
107
108         Fix bug #534965.
109         * Project.cs (BuildTarget): Move caching of target outputs to ..
110         * Target.cs: .. here. Move LogTargetSkipped also here.
111         Ensure that caching happens for target dependencies also.
112
113 2009-09-01  Ankit Jain  <jankit@novell.com>
114
115         * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
116         excludes.
117
118 2009-09-01  Ankit Jain  <jankit@novell.com>
119
120         * Expression.cs (ParseOptions): New enum. Replace the bool params
121         of exression.Parse with this. Add option to control expansion of
122         metadata references.
123         (CopyToExpressionCollection): Track api changes.
124         
125         Update all expr.Parse calls to use the new enum.
126         * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
127         Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
128
129         * BatchingImplBase.cs: Track api changes. Allow metadata refs
130         in task attributes.
131         * ConditionFactorExpression.cs: Allow metadata refs in conditions.
132         * ItemReference.cs: Allow metadata in transforms.
133         * TaskEngine.cs: Allow metadata refs.
134
135         * MetadataReference.cs (.ctor): Add a 'original string' param.
136
137 2009-08-29  Ankit Jain  <jankit@novell.com>
138
139         * Expression.cs (ExpressionOptions): New.
140
141         Introduce a ExpressionOptions argument to all ConvertTo*
142         methods. Implement the rule: in evaluation phase, expand
143         all items completely, but dont expand item refs in properties.
144         At other times, expand the item refs in the properties.
145         See comments in Expression.cs, for a full explanation.
146         * BuildItem.cs: Track api changes.
147         * BuildItemGroup.cs: Likewise.
148         * BuildProperty.cs: Track api changes. Handle self-references.
149         * BuildTask.cs: Track api changes.
150         * IReference.cs: Add ExpressionOptions param.
151         * ItemReference.cs: Track api changes.
152         * PropertyReference.cs: Likewise.
153         * MetadataReference.cs: Likewise.
154         * ExpressionCollection.cs: Track api changes. Add support for
155         converting all primitive types and DateTime, instead of a fixed
156         few.
157         * Project.cs (GetMetadataBatched): Use the evaluated metadata.
158         * TaskBatchingImpl.cs: Handle the case when batching is required,
159         but no items are available.
160
161         * TaskEngine.cs: Throw on unsupported types. Correctly handle
162         properties in case of empty values.
163
164 2009-08-26  Ankit Jain  <jankit@novell.com>
165
166         * Expression.cs: Correctly handle a item reference with transform
167         when allowItems is false. If item ref is ignored, then the transform
168         will get incorrectly matched as a metadata ref.
169         * ItemReference.cs (.ctor): Add a @original_string param.
170
171 2009-08-26  Ankit Jain  <jankit@novell.com>
172
173         * Utilities.cs (UnescapeFromXml): New. From md.
174         * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
175         of the property element.
176
177 2009-08-26  Ankit Jain  <jankit@novell.com>
178
179         * BuildProperty.cs (ConvertToString): New.
180         (ConvertoToITaskItemArray): New. Parse the property value.
181         * PropertyReference.cs (ConvertToString): Use BuildProperty's
182         ConvertToString.
183         (ConvertoToITaskItemArray): Likewise.   
184
185 2009-08-21  Ankit Jain  <jankit@novell.com>
186
187         * Engine.cs (EndProjectBuild): Use the @succeeded argument
188         instead of hardcoding 'true'.
189         * Target.cs (Build): Add an overload to return executeOnErrors
190         value for the target executed. If building dependencies fails,
191         and executeOnErrors is true, then execute OnError tasks.
192         Add the new param to ..
193         (BuildDependencies): this, ..
194         (DoBuild): and this.
195         (GetDependencies): Improve error message and variable name.
196         (ExecuteOnErrors): Honor OnError tag's Condition also.
197         * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
198
199 2009-08-20  Ankit Jain  <jankit@novell.com>
200
201         Fix bug #532264
202         * Project.cs (Load): Add support for loading .sln files.
203
204 2009-08-20  Ankit Jain  <jankit@novell.com>
205
206         * BuildTask.cs (Execute): Use task_logger only after the task
207         has been initialized. Catch and report task loading errors.
208         * Target.cs (DoBuild): Dont rethrow the exception, and emit
209         the stacktrace as a low importance message.
210
211 2009-08-18  Ankit Jain  <jankit@novell.com>
212
213         * BatchingImplBase.cs: Make the item name lookups and metadata be case
214         insensitive.
215         * TaskDatabase.cs: Likewise.
216         * TaskEngine.cs: Make property name looks, case insensitive.
217
218 2009-08-09  Miguel de Icaza  <miguel@novell.com>
219
220         * ConsoleLogger.cs: Change the format of the error and warnings
221         strings to work when invoked inside Emacs by not rendering the
222         column if available, by using lowercase "error"/"warning" strings
223         instead of camelcased versions and to not have unnecessary padding.
224
225 2009-07-31  Ankit Jain  <jankit@novell.com>
226
227         * ConsoleLogger.cs: Keep track of all the errors and warnings
228         and show them at the end.
229
230 2009-07-31  Ankit Jain  <jankit@novell.com>
231
232         * Target.cs (Build): Log a message if a target is skipped.
233         (LogMessage): New.
234         * BuildTask.cs (Execute): Log error if task execution fails.
235
236 2009-07-30  Ankit Jain  <jankit@novell.com>
237
238         * Engine.cs (.ctor): Set default BinPath. Currently this assumes
239         v2.0, this will change when multi-targeting lands.
240
241 2009-07-30  Ankit Jain  <jankit@novell.com>
242
243         * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
244         'MSBuildProjectName' properties.
245
246 2009-07-28  Ankit Jain  <jankit@novell.com>
247
248         * TaskEngine.cs (Prepare): Fix formatting mistake.
249         * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
250         fails. Also, emit result of project at Normal verbosity level.
251
252 2009-07-23  Ankit Jain  <jankit@novell.com>
253
254         Fix bug #511370.
255         * Project.cs (ExtensionsPath): New.
256         (InitializeProperties): Set "MSBuildExtensionsPath" property.
257
258 2009-06-12  Ankit Jain  <jankit@novell.com>
259
260         Fix bug #512535.
261         * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
262         itemref is allowed if the prev/next element is ";".
263
264 2009-06-12  Ankit Jain  <jankit@novell.com>
265
266         * Utilities.cs (FromMSBuildPath): Return null if the path contains
267         "drive:" only on windows.
268
269 2009-06-07  Ankit Jain  <jankit@novell.com>
270
271         * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
272         the metadata.
273
274 2009-05-29  Ankit Jain  <jankit@novell.com>
275
276         Correctly handle global properties. Correctly log
277         project/build events.
278
279         * BuildPropertyGroup.cs (Clone): Implement.
280         * Engine.cs (globalProperties): Rename to ..
281         (global_properties): .. this.
282         (currentlyBuildingProjectsStack): New. Used to correctly
283         log and raise project/build start/finish events.
284         (BuildProjectFile): Override any project global properties
285         with explicitly specified ones, here in the param @globalProperties.
286         Mark project for reevaluation, which will update the engine's
287         global properties also.
288         Reset both engine and project's old global properties at the end.
289         (UnregisterAllLoggers): Log build finished only if we are currently
290         building.
291         (StartBuild): Rename to ..
292         (StartProjectBuild): .. this. Keeps track of the projects being built
293         in the new stack, and logs project and build events accordingly.
294         (EndProjectBuild): New. Uses the stack to keep track of projects
295         finishing builds, and raises project and build events accordingly.
296         (LogProjectStarted): Move here from Project.cs
297         (LogProjectFinished): Likewise.
298
299         * Project.cs (Build): Log start of project build.
300         Set current directory to the project file's dir, and reset at end.
301         (BuildInternal): Don't log here, its done in Build.
302         (BuildTarget): Already built targets are keyed by the set of global
303         properties that they were built with.
304         (GlobalPropertiesToString): New.
305         (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
306         (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
307         (Evaluate): Remove built targets only if we are currently building and
308         build settings are None.
309         Merge project's global properties with those of the parent engine.
310         Add missing properties from engine's global properties.
311         (LogTargetSkipped): Fix format string, add the reqd argument.
312
313 2009-05-29  Ankit Jain  <jankit@novell.com>
314
315         * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
316         (HasTrailingSlash): New.
317
318 2009-05-12  Ankit Jain  <jankit@novell.com>
319
320         * Project.cs (.ctor): Init timeOfLastDirty.
321
322 2009-05-05  Miguel de Icaza  <miguel@novell.com>
323
324         * Contribution from Martin Brenn to fix #498154.
325
326 2009-04-27  Ankit Jain  <jankit@novell.com>
327
328         Fix bug #497839.
329         * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
330         one passed as argument.
331
332 2009-04-27  Ankit Jain  <jankit@novell.com>
333
334         * TaskEngine.cs (Prepare): Emit a useful error message property value
335         can't be converted to required type.
336
337 2009-04-27  Ankit Jain  <jankit@novell.com>
338
339         * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
340         as valid true values for bool, and corresponding for false.
341
342 2009-03-27  Jonathan Chambers  <joncham@gmail.com>
343
344         * BuildWhen.cs: Add basic implementation.
345         * BuildChoose.cs: Add basic implementation.
346         * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to 
347         EvaluatedItemsIgnoringCondition.
348         * GroupingCollection.cs: Add evaluation of BuildChoose items.
349
350 2009-03-26  Jonathan Chambers  <joncham@gmail.com>
351
352         * TaskDatabase.cs (RegisterTask): Search for class by name
353         if task was not found using GetType (which uses namespace). 
354
355 2009-02-26  Ankit Jain  <jankit@novell.com>
356
357         * Target.cs: Handle target with no tasks. Log errors.
358
359 2009-02-24  Ankit Jain  <jankit@novell.com>
360
361         Lazily load UsingTask tasks.
362         * UsingTask.cs (Evaluate): Register 'this' with task database,
363         but don't load it yet. Register only if condition evaluates to true.
364         Move the load logic to ..
365         (Load): .. here. Register with the specified task database.
366         * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
367         in a table keyed by task name, but don't load it yet.
368         (GetTypeFromClassName): Try to load UsingTask if task is not already
369         loaded. Move loading logic to ..
370         (GetTypeFromClassNameInternal): .. here.
371         (CopyTasks): Copy the usingTasks table also.
372
373 2009-02-23  Ankit Jain  <jankit@novell.com>
374
375         * BuildItem.cs (AddMetadata): Allow overwriting older values.
376
377 2009-02-22  Ankit Jain  <jankit@novell.com>
378
379         * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
380         instead of XmlElement. Eg. XmlComment
381
382 2009-02-21  Ankit Jain  <jankit@novell.com>
383
384         * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
385         * Project.cs (Load): Use FromMSBuildPath on the path.
386         (InitializeProperties): Set "MSBuildToolsPath" also.
387
388 2009-02-20  Ankit Jain  <jankit@novell.com>
389
390         Fix #449683.
391         * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
392         transforms) in conditions.
393         * ConditionParser.cs: Parse unquoted item, property references.
394         eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
395         * Token.cs (Token.ToString): Override.
396         (TokenType.Transform): Uncomment.
397
398 2009-02-12  Jonathan Chambers  <joncham@gmail.com>
399
400         * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
401         no XmlElement.InnerText. This allows properties to be additional 
402         xml elements.
403
404 2009-02-01  Ankit Jain  <jankit@novell.com>
405
406         * BuildEngine.cs (BuildProjectFile): Use
407         BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
408         * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
409         built. Move logging of project start/finish to ..
410         * Project.cs: .. here. Build a target only if hasn't been built already.
411         Keep track of target outputs, and return those even if an already built
412         target has been invoked again.
413         Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
414
415 2009-01-31  Ankit Jain  <jankit@novell.com>
416
417         * BatchingImpl.cs: Split into ..
418         * BatchingImplBase.cs: .. this,
419         * TaskBatchingImpl.cs: .. this ..
420         * TargetBatchingImpl.cs: .. and this. Implement target batching here.
421
422         * Target.cs (DoBuild): Use TargetBatchingImpl for building.
423         (Log*): Move to TargetBatchingImpl .
424         (BuildTasks): New.
425         (Engine): New.
426
427 2009-01-30  Ankit Jain  <jankit@novell.com>
428
429         * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
430         arrays.
431
432 2009-01-29  Ankit Jain  <jankit@novell.com>
433
434         * BuildItem.cs (child_items): Change type from BuildItemGroup to
435         List<BuildItem>.
436         (HasParent): Rename to ..
437         (HasParentItem): .. this.
438         (ParentItemGroup): Add setter.
439
440         * BuildItemGroup.cs (.ctor): Add overload with @project param.
441         (AddNewItem):
442         (AddItem): Correctly set the ParentItemGroup for new build items.
443         (ParentProject): Add setter.
444         * Project.cs: Set the project for new BuildItemGroup instances.
445         * TaskEngine.cs (PublishItemGroup): Likewise.
446
447 2009-01-06  Ankit Jain  <jankit@novell.com>
448
449         * Project.cs (Build): Honor InitialTargets list.
450
451 2009-01-06  Ankit Jain  <jankit@novell.com>
452
453         * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
454         the property type also.
455         * MSBuild.cs (Execute): Parse 'Properties' task param to set global
456         properties.
457
458 2009-01-06  Ankit Jain  <jankit@novell.com>
459
460         * Project.cs (Build): Correctly handle null targetNames argument.
461
462 2009-01-06  Ankit Jain  <jankit@novell.com>
463
464         * Engine.cs (LogProjectStarted): Add a null check.
465
466 2009-01-01  Ankit Jain  <jankit@novell.com>
467
468         * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
469         * ChangeType (ToBuildItemGroup): Add 'split' param.
470         Track api changes.
471         * Expression.cs (Parse): Add a new overload with a 'split' param.
472         * ExpressionCollection.cs (Add): Add new overload for IReference,
473         remove the ones for Item/Metadata/PropertyReference.
474         (ConvertToArray): Implement correctly.
475         (ConvertToString): Track api changes.
476         (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
477         (ConvertToITaskItemArray): Implement support for concat'ing expressions.
478         (AddItemsToArray): New.
479         (ConvertToITaskItemArrayFromString): Refactor a bit.
480         (ThrowCantConcatError): New.
481         * ItemReference.cs: Update.
482         * MetadataReference.cs: Update.
483         * PropertyReference.cs (ConvertToITaskItemArray): Implement.
484         (GetValue): New.
485         * BuildPropertyGroup.cs: Track api changes.
486         * TaskEngine.cs (PublishOutput): Improve exception message.
487         * Project.cs (DoLoad): Improve exception message. Add a null check.
488
489 2008-12-30  Ankit Jain  <jankit@novell.com>
490
491         * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
492         metadata values for unqualified references.
493         (BuildItemGroupToITaskItemArray): Rename to ..
494         (BuildItemGroupToITaskItems): .. this.
495         (HasTaskItem): New.
496
497 2008-12-18  Ankit Jain  <jankit@novell.com>
498
499         * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
500
501 2008-12-17  Ankit Jain  <jankit@novell.com>
502
503         * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
504         only one instance of unique metadata value is required.
505
506 2008-11-22  Ankit Jain  <jankit@novell.com>
507
508         * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
509         MetadataReference.
510         * MetadataReference.cs (ConvertToITaskItemArray): New.
511         * Project.cs (GetAllItemGroups): New.
512
513 2008-11-21  Ankit Jain  <jankit@novell.com>
514
515         * BatchingImpl.cs: Add task batching implementation.
516         * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
517         * ExpressionCollection.cs (Count): New.
518         (ConvertToString): Handle MetadataReference.
519         * ItemReference.cs (ConvertToString):
520         (ConvertToITaskItemArray): Use the batching api.
521         (ToString): New.
522         * MetadataReference.cs (ConvertToString): New.
523         (ToString): New.
524         * Project.cs: Add api for accessing batched items and metadata.
525         * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
526         item group.
527
528 2008-10-01  Ankit Jain  <jankit@novell.com>
529
530         * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
531         (BuildProjectFile): If filename is null (project.LoadXml) then use
532         engine.BuildProject
533         * BuildTask.cs (InitializeTask): Track api change.
534         * Expression.cs (Parse): Skip empty entries in the expression.
535
536 2008-09-24  Ankit Jain  <jankit@novell.com>
537
538         * Engine.cs: Add argument checks.
539         * Project.cs: Likewise.
540
541 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
542
543         * Project.cs (Build): Add outputs to targetOutputs.
544
545 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
546
547         * ExpressionCollection.cs (ConvertToArray): Simplify.
548
549 2007-03-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
550
551         * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
552         simplified. It still needs tests and refactoring.
553
554 2007-02-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
555
556         * BuildEngine.cs (BuildProjectFile): Don't crash on null
557         globalProperties.
558
559         * Target.cs: Add Outputs property.
560
561 2007-02-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
562
563         * Target.cs (Build): Split to GetDependencies () and BuildDependencies
564         (). Support condition.
565         
566         * BatchingImpl.cs (BatchBuildTask): Simplify.
567
568 2007-02-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
569
570         * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
571         Simplified.
572
573         * ConditionFunctionExpression.cs: Removed warnings.
574
575         * BuildTask.cs (Execute): Write exceptions to std err (they should be
576         logged but it's better than swallowing).
577
578 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
579
580         * ConditionTokenizer.cs: Add Putback ().
581
582         * ConditionParser.cs: Add parsing of functions.
583
584         * ConditionFunctionExpression.cs: Add.
585
586 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
587
588         * BuildPropertyGroup (SetProperty): Throw an exception when trying to
589         set property in persisted property group.
590
591 2007-01-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
592
593         * BuildTask.cs (Execute): Log errors that happen when invoking ITask
594         .ctor.
595
596         * ConsoleLogger.cs (TargetFinishedHandler)
597         (TaskFinishedHandler): Increment error count.
598
599 2007-01-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
600
601         * BuildItem.cs (RemoveMetadata): Remove from XML.
602         (SetMetadata): Trigger project reevaluation.
603
604 2007-01-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
605
606         * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
607         properties.
608
609 2007-01-23  Marek Sieradzki  <marek.sieradzki@gmail.com>
610
611         * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
612         TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
613         BatchingImpl.cs, BuildProperty.cs: Track API changes.
614
615         * Expression.cs (Parse): Added allowItems parameter and made regexes
616         static.
617
618         * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
619         will try to import a.ext when given a.EXT.
620
621 2007-01-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
622
623         * BuildItemGroup.cs: Store information saying what is the last item
624         group that contains build item name.
625
626         * Project.cs (Build): Pass empty array (build default targets).
627
628 2007-01-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
629
630         * Token.cs: Commented Transform and LiteralSubExpression and added
631         FunctionName token.
632
633         * ConditionParser.cs: Removed redundant casts, rewrote
634         ParseFactorExpression () and added parsing of '!'.
635
636         * ConditionTokenizer.cs: Always skip whitespaces when getting next
637         token (no IgnoreWhiteSpace property). Don't create a token from '->'.
638         Moved ReadChar () in front of all ifs.
639
640 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
641
642         * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
643         from XML. (not to escape items that have parents twice).
644
645 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
646
647         * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
648         (Project): Renamed to ParentProject.
649
650         * BuildItem.cs (ctor)
651         (CopyCustomMetadata): Add null check.
652
653         * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
654         (RemoveProperty): Added null check.
655
656         * TargetCollection.cs (RemoveTarget): Added null check.
657
658         * Engine.cs (UnloadProject): Added null check.
659
660         * GroupingCollection.cs (Remove): Check if removed group belongs to
661         current project.
662
663         * Project.cs (AddNewItem): Implemented.
664         (RemoveItem): Reorganized.
665         (SetProjectExtensions): Added null check.
666
667 2007-01-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
668
669         * BuildItemGroup.cs (Detach): Added.
670         (RemoveItem)
671         (RemoveItemAt): Used Detach ().
672
673         * BuildItem.cs: Made FromXml and HasParent internal and added
674         ParentItem and ParentItemGroup properties (internal).
675         (Detach): Added.
676
677         * GroupingCollection.cs (Remove): Used Detach ().
678
679         * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
680         text on Save ().
681         (GetEvaluatedItemsByNameIgnoringCondition)
682         (GetEvaluatedItemsByName)
683         (GetEvaluatedProperty): Reevaluate if needed.
684         (RemoveItem)
685         (RemoveAllItemGroups)
686         (RemoveAllPropertyGroups): Implemented.
687         (DoLoad): Added closing of TextReader.
688
689 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
690
691         * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
692         change but just mark that it needs it.
693
694         * Project.cs: Reevaluate when it needs reevaluation and one of
695         Evaluated* properties is used.
696
697 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
698
699         * Target.cs: Throw an exception when <OnError> is not last element in
700         target.
701
702         * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
703
704         * TargetCollection.cs: If a target is already there replace it with
705         new target.
706
707         * BuildProperty.cs: Added XmlElement property.
708
709 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
710
711         * ImportCollection.cs: Don't add imports that are already added.
712
713         * BuildItemGroup.cs: MonoTODOs.
714
715         * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
716         condition can't be evaluated to bool.
717
718         * BuildPropertyGroup.cs (Evaluate): Simplify.
719
720 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
721
722         * BuildWhen.cs: Moved BindToXml () code to ctor.
723
724         * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
725         property needed for removing groups.
726
727         * Engine.cs: Added StartBuild () that logs build start when Build ()
728         was first called.
729
730         * GroupingCollection.cs: Added Remove () for item and property groups.
731
732         * Project.cs (AddNewImport): Implemented.
733         (AddNewItemGroup): Implemented.
734         (AddNewPropertyGroup): Implemented.
735         (AddNewUsingTaskFromAssemblyFile): Implemented.
736         (AddNewUsingTaskFromAssemblyName): Implemented.
737         (RemoveItemGroup): Implemented.
738         (RemovePropertyGroup): Implemented.
739
740 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
741
742         * BuildItemGroup.cs (Clear): Remove from XML.
743
744         * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
745         to Project.EvaluatedProperties.
746         (Clear): Remove from XML.
747
748 2007-01-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
749
750         * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
751         reserved property.
752
753 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
754
755         * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
756         Add () calls when processing a project from Import and
757         evaluate_iterator for evaluation.
758
759 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
760
761         * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
762         and prepend relative directory of importing project to full path of
763         imported project.
764
765 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
766
767         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
768         BuildItemGroupCollection.cs, Project.cs: Track API changes.
769
770         * GroupingCollection.cs: Now it needs Project reference so added it.
771
772         * BuildTask.cs: Formatting.
773
774         * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
775
776         * ConditionParser.cs (ParseAndEvaluate): Added.
777
778         * BuildItem.cs: Changed exception message.
779
780 2007-01-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
781
782         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
783         BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
784         GroupingCollection doesn't need Project reference.
785
786         * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
787
788         * BuildItemGroup.cs: Added new readOnly parameter to ctor.
789         (Project.EvaluatedItems is a read only item group.)
790         (ReplaceWith): Added.
791
792         * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
793         global property group causes reevaluation of its project.
794
795         * Project.cs: ProcessXml () is internal and can be "safely" invoked by
796         other classes.
797
798         * OldExpression.cs: Removed.
799
800         * BuildProperty.cs (Evaluate): Simplified.
801
802         * ChangeType.cs (TemporaryTransform): Simplified.
803
804         * BuildItem.cs: There are now 3 types of build items: from XML, having
805         parent from XML, virtual. Added SplitParentItem ().
806
807 2006-12-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
808
809         * Utilities.cs: Added Unescape ().
810
811         * BuildItemGroup.cs, BuildItem.cs: Pass null project to
812         BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
813         groups (at the moment just unescape).
814
815         * Expression.cs (CopyToExpressionList): Unescape strings.
816
817 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
818
819         * Target.cs (ctor): Added ImportedProject argument and removed
820         set_IsImported.
821         (AddNewTask): Implemented.
822
823         * TargetCollection.cs (AddNewTarget): Implemented.
824
825         * Project.cs: Track API changes.
826
827 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
828
829         * Target.cs (Build): Don't throw anything in case of error, just
830         return false.
831
832         * BuildItemGroup.cs (set_Condition): Throw an exception if group is
833         not from XML.
834
835         * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
836         SetMetadata ().
837
838         * BuildProperty.cs (ToString): Throw an exception if property is not
839         from XML.
840         (op_Explicit): Added a null check.
841
842         * Engine.cs: Better error message.
843
844         * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
845         IndexOutOfRangeException.
846
847         * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
848         (MarkProjectAsDirty): Set time.
849
850 2006-12-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
851
852         * BuildItemGroup.cs (Clone): Throw exception.
853
854         * Project.cs (Load): Throw InvalidProjectFileException if anything
855         goes wrong.
856
857 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
858
859         * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
860         and ConvertToITaskItemArray ().
861
862 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
863
864         * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
865         classes that were public in Beta 2 and aren't used.
866
867         * Expression.cs: Added replacement for parsing expressions char by
868         char. It uses regexes to find item/property/metadata references in
869         given text.
870
871         * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
872         Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
873         BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
874
875         * ConditionRelationalExpression.cs: Formatting.
876
877         * OldExpression.cs: Commented everything.
878
879         * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
880         parsing to Expression.
881
882         * BuildItem.cs: Check if project is from XML in set_Condition and
883         set_Exclude.
884
885         * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
886         Project.ctor.
887
888         * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
889         can evaluate expression in CanEvaluateToBool ().
890
891 2006-12-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
892
893         * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
894         which item group is imported.
895
896         * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
897
898 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
899
900         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
901         BuildItemGroupCollection.cs: Little changes related to
902         GroupingCollection.
903
904         * ImportCollection.cs: Use GroupingCollection not an internal list.
905
906         * Import.cs (Evaluate): Split to functions and check if
907         EvaluatedProjectPath is empty.
908
909         * GroupingCollection.cs, Project.cs: Move evaluation to
910         GroupingCollection. Change algorithm to use 2 passes: first for property
911         groups and imports and second for item groups.
912
913 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
914
915         * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
916         BuildItemGroup> not IDictionary.
917
918         * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
919         evaluated to false because we want to add every item to
920         Project.EvaluatedItemsByNameIgnoringCondition.
921
922         * Project.cs (Build): Don't throw an exception just return false.
923         (GetEvaluatedProperty): Avoid NullReferenceException.
924         (SetProjectExtensions): Implemented.
925
926 2006-12-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
927
928         * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
929
930         * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
931         BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
932         Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
933         
934         * ImportCollection.cs: Added a note.
935
936 2006-12-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
937
938         * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
939
940         * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
941         (UsingTask[] array, int index)
942
943         * TaskEngine.cs: Reformatted PublishOutput () and added copying of
944         items to Project.EvaluatedItems in PublishItemGroup ();
945
946         * BuildItemGroup.cs: Added [MonoTODO].
947
948         * UsingTask.cs: Used expression for AssemblyFile to get around
949         problems with '\' and '/'.
950
951         * BuildItem.cs (ctor): Added null checks.
952         (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
953         (SetMetadata): Don't escape evaluatedMetadata and escape
954         unevaluatedMetadata only when treatPropertyValueAsLiteral.
955
956         * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
957         FromXml () instead of null checks.
958         (SetProperty): Escape propertyValue when it is literal.
959
960         * BuildProperty.cs: Changed exception message.
961
962         * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
963         properties.
964         (GetProjectExtensions): Implemented.
965
966 2006-12-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
967
968         * BuildTask.cs: Remove [MonoTODO], add exception throwing in
969         GetParameterValue (), use expressions in ContinueOnError.
970         * ConditionFactorException.cs: Throw InvalidProjectFileException ()
971         instead of InvalidOperationException ().
972         * ImportCollection.cs: Implement CopyTo ().
973         * Target.cs: Remove redundant variables (XmlAttributes), return
974         String.Empty in DependsOnTargets, add a null check in RemoveTask ().
975         * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
976         * Import.cs: Throw an exception when file does not exist.
977         * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
978         * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
979         need to treat item as a token probably
980
981 2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>
982
983         * Import.cs: Check for project.FullFileName (Path.DirectoryName would
984         throw an exception).
985         * BuildItemGroupCollection.cs: Changed exception types.
986
987 2006-10-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
988
989         * Engine.cs: Removed redundant cast.
990         * BuildWhen.cs:
991         * UsingTaskCollection.cs:
992         * ImportCollection:
993         * BuildChoose.cs:
994         * BuildItem.cs:
995         * TargetCollection.cs: Comment unused variable.
996         * ConditionTokenizer.cs: Simplified checking if current token is a
997         keyword.
998         * Target.cs: Removed old code.
999
1000 2006-10-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
1001
1002         * Target.cs: Changed "" to String.Empty.
1003         * TaskEngine.cs: Don't try to convert a parameter to specific type if
1004         string was evaluated to String.Empty.
1005         * InternalLoggerException.cs:
1006         * InvalidProjectFileException.cs: Added LinkDemand before
1007         GetObjectData ().
1008         * ConsoleLogger.cs: Changed "" to String.Empty.
1009         * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1010         with change to generics).
1011         * Project.cs: Made Build () throw more meaningful exception.
1012
1013 2006-10-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1014
1015         * Target.cs: Reformatted.
1016         * TaskEngine.cs: Removed redundant code.
1017         * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1018         * Engine.cs: Made BuildProjectFile () load project file if it's not
1019         loaded yet.
1020
1021 2006-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
1022
1023         * ConditionRelationalExpression.cs: Change comparers to case
1024         insensitive.
1025         * ImportCollection.cs: Add NotImplementedExceptions.
1026         * BuildPropertyGroup.cs: Reformatted a bit.
1027         * BuildProperty.cs: The same.
1028         * Project.cs: Moved evaluation of imports before evaluation of
1029         properties. This may "work" until importing projects is redesigned but
1030         probably isn't correct.
1031
1032 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1033
1034         * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1035         (like comments)
1036         * BuildItemGroup.cs: Change return to continue.
1037
1038 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1039
1040         * ConditionParser.cs: Copyright note.
1041         * ExpressionCollection.cs: Fixed arrays passing.
1042
1043 2006-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1044
1045         * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1046         Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1047         BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1048         TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1049
1050 2006-06-25  Marek Sieradzki  <marek.sieradzki@gmail.com>
1051
1052         * Token.cs: Changed names: removed "than".
1053         * ConditionRelationalExpression.cs: Added.
1054         * ConditionFactorExpression.cs: Added.
1055         * BuildItemGroup.cs: Changed Condition property return value to return
1056         String.Empty instead of null.
1057         * ConditionParser.cs: Added support for parsing relational expressions
1058         and factors.
1059         * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1060         abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1061         and CanEvaluateToBool (), CanEvaluateToNumber () and
1062         CanEvaluateToString ().
1063         * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1064         appropriately to ConditionExpression base class.
1065         * ConditionTokenizer.cs: Added null check and changed names in enums:
1066         removed "than".
1067         * ConditionNotExpression.cs: Added.
1068         * BatchingImpl.cs: Changed to use BoolEvaluate ().
1069         * Project.cs: Added checks for condition.
1070
1071 2006-06-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1072
1073         * ConditionalTokenizer.cs, ConditionalExpression.cs,
1074         ConditionalParser.cs: Changed name,
1075         removed -al.
1076         * ConditionExpression.cs: Added Evaluate ().
1077         * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1078         * BatchingImpl.cs: Added check if task should be executed.
1079
1080 2006-06-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1081
1082         * UsingTask.cs: Changed properties to return null on empty attribute.
1083         * UsingTaskCollection.cs: Added object to SyncRoot.
1084         * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1085
1086 2006-06-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
1087
1088         * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1089         BuildPropertyGroupCollection.cs: Fixed to match the tests.
1090
1091 2006-05-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
1092
1093         * Utilities.cs: Implemented Escape ().
1094         * BuildItem.cs: Added null checks.
1095         * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1096         * Project.cs: Commented out redundant Evaluate ().
1097         * BuildChoose.cs: Minor changes.
1098
1099 2006-05-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1100
1101         * Token: Added new few missing tokens.
1102         * Target.cs, Project.cs: Patch from Matthew Metnesky.
1103         * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1104         ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1105         ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1106         LiteralTokenizer.cs:
1107         Removed literal expression parsing based on tokenizer and
1108         parser. It needs to be done by regex.
1109         
1110         Moved tokenizer to ConditionalTokenizer.cs.
1111
1112 2006-05-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
1113
1114         * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1115         ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1116         methods converting reference to string from ToString () to
1117         ConvertToString () to avoid mistakes like using ToString () provided
1118         by default.
1119
1120 2006-05-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
1121
1122         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1123         Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1124         PropertyReference.cs, BuildProperty.cs: Changed Expression to
1125         OldExpression and changed To* functions to one ConvertTo ().
1126         * TaskEngine.cs: Fixed PublishOutput ().
1127         * OldExpression.cs: Added. It will be temporarily used before
1128         LiteralExpression will be written using Tokenizer.
1129         * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1130         ExpressionParseException.cs, LiteralExpression.cs: Added.
1131
1132 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1133
1134         * ImportedProject.cs: Removed warning.
1135         * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1136         default tasks.
1137
1138 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1139
1140         * Project.cs: Removed unnecessary variable.
1141         * Engine.cs: Added fixme.
1142
1143 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1144
1145         * BuildItem.cs: Moved checking if metadata name is reserved to internal
1146         class (Mono.XBuild.Utilities.ReservedNameUtils).
1147                 
1148 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1149
1150         * BuildTask.cs: Removed unnecessary variable.
1151         * Engine.cs: Added logging of the build start.
1152         * Project.cs: Removed unnecessary variable.
1153
1154 2006-04-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
1155
1156         * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1157
1158 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1159
1160         * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1161
1162 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
1163         
1164         * BuildItem.cs: Fix typo?
1165
1166 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1167
1168         * InternalLoggerException.cs, InvalidProjectFileException.cs,
1169         Engine.cs, Project.cs: Coding style fixes.
1170
1171 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
1172         
1173         * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1174
1175 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
1176         
1177         * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1178         to pass tests. Wrote serialization constructor.
1179         * Engine.cs, Project.cs: Global engine and project unloading, test and
1180         formatting fixes.
1181
1182 2006-03-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
1183
1184         * UsingTask.cs: Formatting changes.
1185
1186 2006-03-27  Crestez Leonard  <cdleonard@gmail.com>
1187
1188         * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1189         to lists instead of hashtables.
1190         * Import.cs: Cleaned up, moved importing from Project.cs
1191         * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1192         * Engine.cs: Cleaned up properties.
1193         * Project.cs: Moved importing to Import.cs, cleaned up properties,
1194         Separated evaluation and loading.
1195         
1196 2006-03-21  Crestez Leonard  <cdleonard@gmail.com>
1197
1198         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1199         BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1200         Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1201         binding and evaluation, merge xml binding in constructors.
1202         * DirectoryScanner.cs: Includes CAN be empty.
1203         * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1204         * ConsoleLogger.cs: Fix compilation warning.
1205
1206 2006-03-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1207
1208         * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1209
1210 2006-03-18  Marek Sieradzki  <marek.sieradzki@gmail.com> 
1211
1212         * Engine.cs: API cleanup.
1213
1214 2006-03-18  Crestez Leonard  <cdleonard@gmail.com>
1215
1216         * Project.cs: Cleaned up add.
1217         * Expression.cs: Hacked to transform \ and / to path separators.
1218         * BuildPropertyGroup.cs: Small cleanup.
1219         * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1220         reference.
1221         
1222 2006-03-11  Marek Sieradzki  <marek.sieradzki@gmail.com> 
1223
1224         * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1225         * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1226         files.
1227         * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1228         BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1229         Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1230         API.
1231         * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1232         * TaskElement.cs: Temporarily removed.
1233         * Xml.cs: Changed to static.
1234
1235 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
1236
1237         * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1238         IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1239         ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1240         IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1241         ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1242         IBuildPropertyGroupCollection.cs: Removed.
1243
1244 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com> 
1245
1246         * BuildItem.cs: Removed IBuildItem references.
1247         * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1248         IBuildItemGroup references. Changed Evaluate to internal.
1249         * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1250         reference and hidden constructors.
1251         * BuildProperty.cs: Removed IBuildProperty reference.
1252         * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1253         IBuildPropertyGroup references. Changed Evaluate to internal.
1254         * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1255         reference and hidden constructors.
1256         * ConsoleLogger.cs: Updated names of event handlers.
1257         * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1258         Escape. Added UnloadAllProjects () and UnloadProject ().
1259         * FileLogger.cs: Removed ApplyParameter ().
1260         * GroupingCollection.cs: Hidden.
1261         * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1262         * ItemPropertyGroupingBase.cs: Commented.
1263         * ProcessingPass.cs: Hidden.
1264         * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1265         Encoding.
1266         * Target.cs: Removed ITarget reference.
1267         * TargetCollection.cs: Removed ITargetCollection reference.
1268         * TaskElement.cs: Removed ITaskElement reference.
1269         * TaskEngineAssemblyResolver.cs: Hidden.
1270         * Utilities.cs: Made static class, removed CheckPath (),
1271         ValidateCulture (), GetSupportedCultures () and added Escape ().
1272
1273 2006-02-24  Marek Sieradzki <marek.sieradzki@gmail.com> 
1274
1275         * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1276         API.
1277
1278 2005-09-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1279
1280         * Project.cs: Added MonoTODO attributes.
1281         * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1282         ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1283         IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1284         BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1285         SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1286         BuildItemGroup.cs, InvalidProjectFileException.cs,
1287         BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1288         Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1289         PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1290         ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1291         IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1292         IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1293         ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1294         ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1295         IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1296         IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1297         BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1298         ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1299
1300 2005-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
1301
1302         * TaskDatabase.cs: Change Shared to Framework.
1303         * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1304         CaseInsensitiveHashCodeProvider
1305
1306 2005-09-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
1307
1308         * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1309         * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1310         property.
1311
1312 2005-09-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
1313
1314         * InternalLoggerException.cs: Changed protected fields to private.
1315
1316 2005-09-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
1317
1318         * Engine.cs: Added check for globalProperties.
1319         * Project.cs: Added using path from importedProject.FullFileName when
1320         adding UsingTask elements.
1321
1322 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1323
1324         * TaskElement.cs: Changed ReflectedType to PropertyType.
1325         * ChangeType.cs (TransformToString): Changed to pass proper Type to
1326         TemporaryTransform. 
1327
1328 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1329
1330         * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1331         new property.
1332         * BuildProperty.cs: Organized PropertyType enum.
1333         * Engine.cs: Added setting CommandLine PropertyType of global
1334         properties.
1335
1336 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1337
1338         * InvalidProjectFileException.cs: Changed Message property.
1339         * ChangeType.cs (TransformToString): Added separator between items.
1340         * TaskEngineAssemblyResolver.cs: Formatting.
1341
1342 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1343
1344         * DirectoryScanner.cs: Added.
1345         * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1346         * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1347         * Project.cs: Removed Evalute* ().
1348
1349 2005-08-30  Marek Sieradzki  <marek.sieradzki@gmail.com>
1350
1351         * Target.cs: Formatting.
1352         * Expression.cs: Added check if array == null.
1353         * BuildItem.cs: Removed 'break' to remove warnings.
1354         * ConsoleLogger.cs: Formatting.
1355         * Engine.cs: Added handling of default target(s).
1356         * Project.cs: Added handling of default target(s).
1357
1358 2005-08-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1359
1360         * TaskElement.cs: Added check for parameters.
1361         * Target.cs: Added logging of target skipping.
1362         * Expression.cs: Changed returning object[] to string[], bool[]... in
1363         ToArray ().
1364         * ItemReference.cs: Fixed for item references without custom
1365         separators.
1366         * BatchingImpl.cs: Added real inputs/outputs checking.
1367         * Engine.cs: Moved global properties setting.
1368         * Project.cs: Moved global properties setting.
1369
1370 2005-08-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
1371
1372         * Target.cs: Added checks for target existence.
1373         * BuildItemGroup.cs: Changed to use transforms.
1374         * MetadataReference.cs: Wrote real implementation.
1375         * ItemReference.cs: Rewritten to use transforms.
1376         * BuildItem.cs: Changes for transforms and metadata.
1377         * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1378         formatting.
1379         * Project.cs: Fixed project importing.
1380         * ImportedProject.cs: Changed to throw exceptions instead of returning
1381         bool.
1382
1383 2005-08-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1384
1385         * Engine.cs: Removed FIXME.
1386         * Project.cs: Splitted ProcessElements and added project importing.
1387         * ImportedProject.cs: Rewritten.
1388
1389 2005-08-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1390
1391         * TaskElement.cs: Added getting of objects of every type.
1392         * BuildItemGroup.cs: Added ToITaskItemArray ().
1393         * Expression.cs: Implemented part that is not using metadata.
1394         * ItemReference.cs: Implemented parsing item references. Need to fix
1395         validity checking.
1396         * BuildItem.cs: Fixed ToITaskItem ().
1397         * PropertyReference.cs: Implemented parsing property references. This
1398         also needs validity checking.
1399
1400 2005-08-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1401
1402         * TaskElement.cs: Added Output element handling.
1403         * Target.cs: Cleaned up.
1404         * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1405         * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1406         ItemReference.cs, ChangeType.cs: Added.
1407         * BuildItem.cs: Added creating BuildItem from TaskItem.
1408         * BuildPropertyGroup.cs: Small changes.
1409         * BatchingImpl.cs: Fixed to return real task execution result.
1410         * BuildProperty.cs: Fixed FinalValue property.
1411         * Engine.cs: Reformatted logging.
1412         * Project.cs: Added check to EvaluateProperty.
1413
1414 2005-08-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1415
1416         * TaskElement.cs: Added part of execution engine.
1417         * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1418         * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1419         * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1420         * BuildItem.cs: Added handling of built-in metadata and referencing
1421         Items by name not FullName.
1422         * BatchingImpl.cs: Added temporary task "batching".
1423         * ConsoleLogger.cs: Added temporary workaround to not show sender.
1424         * Project.cs: Added Evaluate. It will be moved to separate class.
1425
1426 2005-08-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1427
1428         * EventSource.cs, Engine.cs: Added CriticalEvents.
1429         * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1430         Project.cs: Added some support for items.
1431         * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1432
1433 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1434
1435         * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1436         of properties.
1437
1438 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1439
1440         * BatchingImpl.cs: Added.
1441         * BuildWhen.cs, BuildEngine.cs, Target.cs,
1442         BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1443         BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1444         TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1445         GroupingCollection.cs: Updated.
1446
1447 2005-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1448
1449         * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1450         BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1451         BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1452         BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1453         EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1454         GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1455         InternalLoggerException.cs, InvalidProjectFileException.cs,
1456         ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1457         ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1458         TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1459         TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1460         Initial check-in of implementations.
1461
1462 2005-07-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1463
1464         * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1465         IBuildItemGroupCollection.cs, IBuildProperty.cs,
1466         IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1467         ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1468         IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1469         IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1470         Initial check-in of interfaces and a syntax file, real classes are
1471         changing a lot so I'll wait a moment with checking them in.