Author: msierad
Date: 2006-12-11 08:45:48 -0500 (Mon, 11 Dec 2006)
New Revision: 69320
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ItemReference.cs
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TaskEngine.cs
Log:
2006-12-11 Marek Sieradzki <[EMAIL PROTECTED]>
* TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
BuildItemGroup> not IDictionary.
* BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
evaluated to false because we want to add every item to
Project.EvaluatedItemsByNameIgnoringCondition.
* Project.cs (Build): Don't throw an exception just return false.
(GetEvaluatedProperty): Avoid NullReferenceException.
(SetProjectExtensions): Implemented.
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs
2006-12-11 13:45:48 UTC (rev 69320)
@@ -184,12 +184,11 @@
if (Include == String.Empty)
throw new InvalidProjectFileException ("Item
must have Include attribute.");
- foreach (XmlElement xe in xmlElement.ChildNodes) {
+ foreach (XmlElement xe in xmlElement.ChildNodes)
this.SetMetadata (xe.Name, xe.InnerText);
- }
}
- internal void Evaluate ()
+ internal void Evaluate (bool evaluatedTo)
{
DirectoryScanner directoryScanner;
OldExpression includeExpr, excludeExpr;
@@ -218,24 +217,38 @@
directoryScanner.Scan ();
foreach (string matchedFile in
directoryScanner.MatchedFilenames) {
- AddEvaluatedItem (matchedFile);
+ AddEvaluatedItem (evaluatedTo, matchedFile);
}
}
- private void AddEvaluatedItem (string itemSpec)
+ private void AddEvaluatedItem (bool evaluatedTo, string
itemSpec)
{
Project project = this.parentItemGroup.Project;
-
+ BuildItemGroup big;
BuildItem bi = new BuildItem (this);
bi.finalItemSpec = itemSpec;
- project.EvaluatedItems.AddItem (bi);
- if (project.EvaluatedItemsByName.Contains (bi.name) ==
false) {
- BuildItemGroup big = new BuildItemGroup (null,
project);
- project.EvaluatedItemsByName.Add (bi.name, big);
+
+ if (evaluatedTo) {
+ project.EvaluatedItems.AddItem (bi);
+
+ if (!project.EvaluatedItemsByName.ContainsKey
(bi.name)) {
+ big = new BuildItemGroup (null,
project);
+ project.EvaluatedItemsByName.Add
(bi.name, big);
+ } else {
+ big = project.EvaluatedItemsByName
[bi.name];
+ }
+
big.AddItem (bi);
+ }
+
+ if
(!project.EvaluatedItemsByNameIgnoringCondition.ContainsKey (bi.name)) {
+ big = new BuildItemGroup (null, project);
+
project.EvaluatedItemsByNameIgnoringCondition.Add (bi.name, big);
} else {
- ((BuildItemGroup) project.EvaluatedItemsByName
[bi.name]).AddItem (bi);
+ big =
project.EvaluatedItemsByNameIgnoringCondition [bi.name];
}
+
+ big.AddItem (bi);
}
internal string ConvertToString (OldExpression transform)
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
2006-12-11 13:45:48 UTC (rev 69320)
@@ -73,11 +73,10 @@
{
foreach (BuildItem bi in buildItems) {
if (bi.Condition == String.Empty)
- bi.Evaluate ();
+ bi.Evaluate (true);
else {
ConditionExpression ce =
ConditionParser.ParseCondition (bi.Condition);
- if (ce.BoolEvaluate (parentProject))
- bi.Evaluate ();
+ bi.Evaluate (ce.BoolEvaluate
(parentProject));
}
}
}
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
2006-12-11 13:45:48 UTC (rev 69320)
@@ -1,3 +1,16 @@
+2006-12-11 Marek Sieradzki <[EMAIL PROTECTED]>
+
+ * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
+ BuildItemGroup> not IDictionary.
+
+ * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
+ evaluated to false because we want to add every item to
+ Project.EvaluatedItemsByNameIgnoringCondition.
+
+ * Project.cs (Build): Don't throw an exception just return false.
+ (GetEvaluatedProperty): Avoid NullReferenceException.
+ (SetProjectExtensions): Implemented.
+
2006-12-08 Marek Sieradzki <[EMAIL PROTECTED]>
* TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ItemReference.cs
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ItemReference.cs
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ItemReference.cs
2006-12-11 13:45:48 UTC (rev 69320)
@@ -137,8 +137,8 @@
{
if (itemName != String.Empty) {
BuildItemGroup big;
- if (parentProject.EvaluatedItemsByName.Contains
(itemName)) {
- big =
(BuildItemGroup)parentProject.EvaluatedItemsByName [itemName];
+ if
(parentProject.EvaluatedItemsByName.ContainsKey (itemName)) {
+ big =
parentProject.EvaluatedItemsByName [itemName];
return big.ConvertToITaskItemArray
(transform);
} else
return null;
@@ -150,8 +150,8 @@
{
if (itemName != String.Empty) {
BuildItemGroup big;
- if (parentProject.EvaluatedItemsByName.Contains
(itemName)) {
- big =
(BuildItemGroup)parentProject.EvaluatedItemsByName [itemName];
+ if
(parentProject.EvaluatedItemsByName.ContainsKey (itemName)) {
+ big =
parentProject.EvaluatedItemsByName [itemName];
return big.ConvertToString (transform,
separator);
} else
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
2006-12-11 13:45:48 UTC (rev 69320)
@@ -42,7 +42,6 @@
public class Project {
bool buildEnabled;
- //IDictionary conditionedProperties;
Dictionary <string, List <string>> conditionedProperties;
string[] defaultTargets;
Encoding encoding;
@@ -197,7 +196,8 @@
foreach (string target in targetNames) {
if (!targets.Exists (target))
- throw new InvalidOperationException
(String.Format ("Target {0} does not exist.", target));
+ // FIXME: test if it's logged
+ return false;
if (!targets [target].Build ())
return false;
@@ -220,7 +220,7 @@
if (evaluatedItemsByName.ContainsKey (itemName))
return evaluatedItemsByName [itemName];
else
- return null;
+ return new BuildItemGroup ();
}
public BuildItemGroup GetEvaluatedItemsByNameIgnoringCondition
(string itemName)
@@ -228,12 +228,17 @@
if (evaluatedItemsByNameIgnoringCondition.ContainsKey
(itemName))
return evaluatedItemsByNameIgnoringCondition
[itemName];
else
- return null;
+ return new BuildItemGroup ();
}
public string GetEvaluatedProperty (string propertyName)
{
- return (string) evaluatedProperties [propertyName];
+ if (propertyName == null)
+ throw new ArgumentNullException
("propertyName");
+
+ BuildProperty bp = evaluatedProperties [propertyName];
+
+ return bp == null ? null : (string) bp;
}
public string GetProjectExtensions (string id)
@@ -243,7 +248,6 @@
XmlNode node = xmlDocument.SelectSingleNode
(String.Format ("/tns:Project/tns:ProjectExtensions/tns:{0}", id),
XmlNamespaceManager);
- // FIXME: InnerXml or InnerText?
if (node == null)
return String.Empty;
else
@@ -351,7 +355,6 @@
xmlDocument.Save (outTextWriter);
}
- [MonoTODO]
public void SetImportedProperty (string propertyName,
string propertyValue,
string condition,
@@ -361,7 +364,6 @@
PropertyPosition.UseExistingOrCreateAfterLastPropertyGroup);
}
- [MonoTODO]
public void SetImportedProperty (string propertyName,
string propertyValue,
string condition,
@@ -383,10 +385,34 @@
throw new NotImplementedException ();
}
- [MonoTODO]
public void SetProjectExtensions (string id, string xmlText)
{
- throw new NotImplementedException ();
+ XmlNode projectExtensions, node;
+
+ if (id == null || id == String.Empty || xmlText == null)
+ return;
+
+ projectExtensions = xmlDocument.SelectSingleNode
("/tns:Project/tns:ProjectExtensions", XmlNamespaceManager);
+
+
+ if (projectExtensions == null) {
+ projectExtensions = xmlDocument.CreateElement
("ProjectExtensions", XmlNamespace);
+ xmlDocument.DocumentElement.AppendChild
(projectExtensions);
+
+ node = xmlDocument.CreateElement (id,
XmlNamespace);
+ node.InnerXml = xmlText;
+ projectExtensions.AppendChild (node);
+ } else {
+ node = xmlDocument.SelectSingleNode
(String.Format ("/tns:Project/tns:ProjectExtensions/tns:{0}", id),
XmlNamespaceManager);
+
+ if (node == null) {
+ node = xmlDocument.CreateElement (id,
XmlNamespace);
+ projectExtensions.AppendChild (node);
+ }
+
+ node.InnerXml = xmlText;
+
+ }
}
[MonoTODO]
@@ -683,11 +709,11 @@
get { return evaluatedItemsIgnoringCondition; }
}
- internal IDictionary EvaluatedItemsByName {
+ internal IDictionary <string, BuildItemGroup>
EvaluatedItemsByName {
get { return evaluatedItemsByName; }
}
- internal IDictionary EvaluatedItemsByNameIgnoringCondition {
+ internal IDictionary <string, BuildItemGroup>
EvaluatedItemsByNameIgnoringCondition {
get { return evaluatedItemsByNameIgnoringCondition; }
}
Modified:
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TaskEngine.cs
===================================================================
---
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TaskEngine.cs
2006-12-11 13:40:52 UTC (rev 69319)
+++
trunk/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TaskEngine.cs
2006-12-11 13:45:48 UTC (rev 69320)
@@ -152,8 +152,8 @@
{
BuildItemGroup newItems = CollectItemGroup
(propertyInfo, o, itemName);
- if (parentProject.EvaluatedItemsByName.Contains
(itemName)) {
- BuildItemGroup big = (BuildItemGroup)
parentProject.EvaluatedItemsByName [itemName];
+ if (parentProject.EvaluatedItemsByName.ContainsKey
(itemName)) {
+ BuildItemGroup big =
parentProject.EvaluatedItemsByName [itemName];
big.Clear ();
parentProject.EvaluatedItemsByName.Remove
(itemName);
parentProject.EvaluatedItemsByName.Add
(itemName, newItems);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches