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