2009-01-06 Jb Evain * CecilMetadata.cs: support some more operators. 2008-12-25 Chris Toshok * CompareContext.cs: Make sure we compare attributes in CompareTypeLists too, otherwise we drop missing attribute nodes if the type is present. 2008-12-25 Chris Toshok * CompareContext.cs: split out the comparison of base types into a separate method. Also, if we're adding a missing type, add a tree node for the base type. 2008-12-19 Jb Evain * InfoManager.cs: add SL2SDK assemblies: System.Xml.Linq, System.Windows.Controls and System.Windows.Controls.Data. 2008-12-17 Jb Evain * CecilMetadata.cs: in the process of fixing our interface story. Always include all the interfaces for a type, by walking down its hierarchy. mono-api-info does the same as well now. This make it easier to compare interface implementation. 2008-12-17 Jb Evain * MainWindow.cs * InfoManager.cs * CompareContext.cs: Avoid defining our own delegate when we can use Func and Action. 2008-12-17 Jb Evain * MainWindow.cs * Metadata.cs * Comparison.cs * CompareContext.cs: PascalCase public fields in Comparison. 2008-12-17 Jb Evain * CecilMetadata.cs: treat Finalizers as an implementation detail and ignore it for the comparison. 2008-12-16 Jb Evain * CecilMetadata.cs: fix the comparison of the definition of System.Delegate and System.MulticastDelegate. 2008-12-05 Jb Evain * CecilMetadata.cs * CompareContext.cs * Comparison.cs * Main.cs * MasterMetadata.cs * Masterinfo.cs * Metadata.cs: add license and copyright information. 2008-12-05 Jb Evain * CecilMetadata.cs * CompareContext.cs * Comparison.cs * MasterMetadata.cs * Metadata.cs: cleanup usings. 2008-12-04 Jb Evain * CompareContext.cs * MainWindow.cs: move the Gtk dependant code from the CompareContext to the MainWindow, so that CompareContext can be used in a non Gtk application. 2008-12-04 Jb Evain * AssemblyResolver.cs: update. 2008-12-02 Chris Toshok * CecilMetadata.cs: fix TODO attribute handling. they aren't public, so we need to handle them before we check for public/private. 2008-11-21 Jb Evain * CecilMetadata.cs: improve pretty printing of Cecil types. * InfoManager.cs: update masterinfos uri to point to the new files. * MasterMetadata.cs, Masterinfo.cs: adjust to the mono-api-info format changes, which add a generic-parameters group to every generic method or type, and which can have a generic-parameter-constraints subgroup. 2008-08-15 Chris Toshok * MasterMetadata.cs (MasterUtils.ShouldSkipAttribute): we can't just use a string comparison here for CodeAnalysis attributes - they contains lots of info in the name string, we only cafe if it starts with "System.Diagnostics.CodeAnalysis.SuppressMessageAttribute". 2008-08-13 Chris Toshok * CecilMetadata.cs: go back to ignoring all private methods. if there are missing methods due to this, we need to fix the .xml generation. 2008-08-11 Sebastien Pouliot * CecilMetadata.cs: PrettyPrint nullable types correctly. 2008-08-08 Sebastien Pouliot * CecilMetadata.cs: Don't recurse on BaseType when looking at interfaces, otherwise we end up with a lot of extras (compared to the XML definition). Process private methods that are implementing an explicit interface requirement. Add NotSerialized to the FieldAttributes mask. * MasterMetadata.cs: Add NonSerializedAttribute to ShouldSkipAttribute since this pseudo-attribute is part of the XML definition. Add FamORAssem checks (replace by Family) since this introduce false errors in the reports (we don't care about the internal/assembly part) * Masterinfo.cs: Fix bad check with FamORAssem that turned private stuff into Family. 2008-06-04 Jb Evain * CecilMetadata.cs (CecilUtils.GetCustomAttributes): don't crash if the custom attribute constructor's declaring type can not be resolved. 2008-06-04 Jb Evain * InfoManager.cs: System.Xml.Core is renamed to System.Xml in SL 2.0b. 2008-02-10 Chris Toshok [ Fix a couple of bugs reported by jpobst ] * CecilMetadata.cs (CecilProperty.ctor): we can't just use the name - multiple "Item" properties were screwing things up. (CecilProperty.FormatName): format the name for display and for comparison against the masterinfo. Masterinfo version is "Type Name [ param-types ]", and display version if "Name [ param-types]" (including the type in the display version made it a little hard to actually see what the name of the property was.) (CecilField.GetMemberAccess): convert FamORAssem to just Family. (CecilMethod.GetMemberAccess): same. * MasterMetadata.cs (MasterProperty.ctor): we need to format the name based on the key, not on the name attribute alone. (MasterProperty.FormatName): format the name to match up with CecilProperty.FormatName. 2008-02-07 Stephane Delcroix * MainWindow.cs: move the LoadConfiguration part at the end of the ctor. 2008-02-01 Andrew Jorgensen * Makefile.am: gui-compare is generated by autotools 2008-01-16 Chris Toshok * configure: pointless update from generating makefiles... * Metadata.cs: assemblies are attribute containers. * MasterMetadata.cs: create the list of assembly attributes. * CecilMetadata.cs: get the list of assembly attributes. * CompareContext.cs: compare the attributes on reference/target assemblies. * Masterinfo.cs: make attributes on assemblies public. 2008-01-15 Chris Toshok * MainWindow.cs: add a history entry for the current CompareDefinition, if the counts are different than the previous one. * InfoManager.cs: when doing a preset compare, set the title to be the assemblyname. * MasterMetadata.cs: Skip over MS's CodeAnalysis attributes. * CecilMetadata.cs: skip over MS's CodeAnalysis attributes. * CompareContext.cs: add Constructors as missing * Config.cs: Add CompareHistory class, which is just a timestamped class containing all the counts from a comparison run. Add an array of them to CompareDefinition. Also, fix AddRecent to look for an existing entry in the Recent array (by using the new CompareDefinition.GetKey), moving it to the top. This pretty much removes the need for MoveToTop, as it could be folded in here, but leave it for now. 2008-01-14 Chris Toshok * MainWindow.cs: hide the progress bar when we're done, and implement the OnShowNotImplementedToggled method * InfoManager.cs: fix the remote file downloading. can't believe the bugs this thing has had... * gtk-gui/MainWindow.cs: add Show Notimplemented menu item and signal handler * gtk-gui/gui.stetic: add ShowNotImplemented action * Config.cs: add ShowNotImplemented 2008-01-14 Chris Toshok * MainWindow.cs: add the niex counts to the counts column * gui-compare.mdp: add the mn.png resource * cm/mn.png: steal jpobst's NIEX icon * CompareContext.cs: set throws_niex instead of adding an error. * gtk-gui/MainWindow.cs: add the ShowNotImplemented action * Comparison.cs: count NIEX's 2008-01-14 Chris Toshok * Metadata.cs: add GetLiteralValue() abstract method to CompField. * InfoManager.cs: wex might be null here since we're in the else branch, so don't look in it. * MasterMetadata.cs: implement MasterField.GetLiteralField. * CecilMetadata.cs: Implement CecilField.GetLiteralValue. * CompareContext.cs: check literal field values (fixes enum comparing) 2008-01-13 Chris Toshok * InfoManager.cs: fix this obvious brokenness. 2008-01-13 Chris Toshok * CecilMetadata.cs: only include the generic parameters of the method in the beautified version of the method name. 2008-01-11 Chris Toshok * CecilMetadata.cs: Fix explicit interface definitions of events. 2008-01-11 Chris Toshok * InfoManager.cs: add support for IfModifiedSince to the download logic, so we'll redownload a masterinfo .tar.gz file automatically if there's a newer one on the server. 2008-01-11 Chris Toshok * MasterMetadata.cs: deal with a null masterinfo. * Masterinfo.cs: deal with empty masterinfo files (with no assemblies) correctly. 2008-01-03 Miguel de Icaza * InfoManager.cs: For people that are abusing XDG_DATA_HOME, ignore their setting. 2008-01-09 Chris Toshok * Metadata.cs: add abstract bool ThrowsNotImplementedException method to CompMethod. * MasterMetadata.cs: always return false from ThrowsNotImplementedException, since we have no idea (but can assume it doesn't, since most of our masterinfos are generated from MS source). * CecilMetadata.cs: Copy MoMA's implementation of ThrowsNotImplementedException * CompareContext.cs: for two methods, check to see if the target throws NotImplementedException when the reference doesn't. 2008-01-03 Miguel de Icaza * CecilMetadata.cs: Ignore internal attributes applies to public classes; Fixes the warnings in System.Drawing 2008-01-03 Miguel de Icaza * MainWindow.cs: SetComparedefinition allow setting target/reference on a single call fro mthe CompareDefinition * CustomCompare.cs: New dialog box for custom compares. * InfoManager.cs: Refactor code, move body to MainWindow * ProviderSelector.cs: Spice this up. * gtk-gui/gui.stetic: Widget to pick XML files or assemblies. * Config.cs: Add new ToString override that formats the comparison for consistent titles 2008-01-02 Chris Toshok * MainWindow.cs: move the "summary.Visible = false" to StartCompare() so that regardless of how we start a new run, the summary goes away. * CompareContext.cs: rename master -> reference and assembly -> target. 2008-01-02 Chris Toshok * Metadata.cs: make the class, interface, delegate, and enum classes implement ICompHasBaseType, and add DisplayName to CompNamed, which we'll use instead of Name to populate the tree. * CecilMetadata.cs: Add type prettification to set the DisplayName on the comparison nodes (show the actual operator, type name replacement for system types, etc). Also, implement the GetBaseType stuff. * CompareContext.cs: compare base types. use ComparisonNode.AddError * MasterMetadata.cs: implement all the GetBaseType methods. * Masterinfo.cs: remove tons of stuff from corcompare that we no longer need. * Comparison.cs: add ComparisonNode.AddError which sets the status and adds the message. 2008-01-02 Miguel de Icaza * MainWindow.cs: Load defauls from the configuration file * InfoManager.cs: Track recently used comparisons * Config.cs: Add new API to manage our recently used list 2008-01-02 Miguel de Icaza 2008-01-02 Miguel de Icaza * CompareContext.cs: Provide some hints, not a great way of doing it. 2008-01-02 Miguel de Icaza 2008-01-02 Chris Toshok * MainWindow.cs: hide the summary when we start refreshing * CecilMetadata.cs: add generic parameters to the method name, and remove all those Replace('/','+')'s from everywhere and stick them in CecilUtils.FormatTypeLikeCorCompare. * gtk-gui/MainWindow.cs: add a separator to the file menu 2008-01-01 Chris Toshok * MainWindow.cs: Remove the checks of the Show* actions in our populate code. limitting display is done via the filter logic, not when populating the tree. Also, fill in and show/hide the summary label when we need to. * CecilMetadata.cs: Fix the interface comparisons - walk the hierarchy, collecting a list. just for kicks, due it in the least efficient way possible. also find the TODO attributes and remember their messages. Make sure to grab the list of attributes in the appropriate constructor, instead of in GetAttributes, because if we do it there, it's already too late to register the counts with the proper comparison nodes. Also, only check certain field/property/method attributes. mask them to what corcompare seems to generate. * Metadata.cs: add a todo list that we can fill in via the CecilMetadata code. also, add abstract GetMemberAccess method. * CompareContext.cs: Make sure to GetComparisonNode from the assembly_list if we can help it, since that node will contain all the MonoTODO's. Also, compare constructors. * MasterMetadata.cs: fill in our attributes and method/field/property access. * AssemblyResolver.cs: steal this code from the linker * gtk-gui/gui.stetic: add in a summary label that we auto show/hide, and get rid of that toolbar. move Refresh under the File menu. * Masterinfo.cs: make the various ConvertToString methods public instead of protected. * Comparison.cs: keep track of a list of error messages and todo's, and propagate the todo count properly. 2007-12-28 Chris Toshok * MainWindow.cs: change the line foreground based on the node's status. also, add Todo stats. * CecilMetadata.cs: lot of changes. copy some code from the linker, and use it to walk up the hierarchy adding interfaces so we match corcompare. Don't ignore the "op_" methods. Also, make sure we flag System.Delegate and System.MulticastDelegate as delegates. Do a similar fudging for System.Enum. Also, if we initialize a CecilInterface from a TypeReference, don't include the attributes on it. Lastly, include the return type of methods in their name so we can correctly sort them. * Metadata.cs: add GetMemberType() to CompMember. * CompareContext.cs: start listing errors. if the types of the members differ, it's an error. also, add missing attributes in AddMissing. * MasterMetadata.cs: lot of changes. add return types to MasterMethod, and add that to the name. handle nested types, and duplicate the CecilMetadata PopulateTypeLists. * gtk-gui/MainWindow.cs, gtk-gui/gui.stetic: add "Show Todo" action * Masterinfo.cs: make the field stuff public. * Comparison.cs: tally up the errors properly. 2007-12-28 Miguel de Icaza * CompareWindow.cs: Add the 3.5 assemblies to the list; With 3.5 replacing 2.0 assemblies to effectively be an SP1, should we deprecate 2.0? 2007-12-27 Chris Toshok * MainWindow.cs: rework the "Show {present, missing, extra, etc}" stuff using a gtk treemodelfilter. It's slower than recreating the tree, but it maintains expanded state and selection across changes, which is nice. * CompareContext.cs: add more missing elements to the tree, and also keep track of the counts from the reference assembly so we can give *some* indication of progress, 2007-12-27 Chris Toshok * cm/*.gif: make all these transparent as a first pass at making them not look like ass. 2007-12-27 Chris Toshok * CecilMetadata.cs: rename Utils to CecilUtils. Also, fix the broken logic that was resulting in private properties being included in the list of properties (and therefore showing up as extras). * MasterMetadata.cs: abstract out a lot of the list creation stuff into a Utils class, like we do in CecilMetadata.cs Call it MasterUtils. 2007-12-27 Chris Toshok * CecilMetadata.cs: add a ctor for CecilMetadata that takes a TypeDefinition (along with one that takes a TypeReference). in the type_def case, we populate the member lists just as we would for a class, so we can check them. currently they all show up as extra, since the MasterMetadata doesn't populate its interfaces properly yet. 2007-12-27 Chris Toshok * CecilMetadata.cs: factor out all the duplicate attribute list handling code. also, make it deal with MonoTODO attributes. * CompareContext.cs: fix progress message 2007-12-27 Chris Toshok * MainWindow.cs: add handling for the refresh button. also, remove the counts of various things if the View menu has them disabled. * gtk-gui/MainWindow.cs, gtk-gui/gui.stetic: add a refresh button to re-run the current comparison. this is a stopgap for the planned inotify/fam/whatever based code that will notice when the assembly changes and will automatically refresh. 2007-12-27 Chris Toshok * MainWindow.cs: repopulate the model if any of the View actions change. also, take into account the view actions when populating the tree model. * gtk-gui/MainWindow.cs, gtk-gui/gui.stetic: add a View menu for showing errors/missing/extra/present items 2007-12-27 Chris Toshok * CecilMetadata.cs: skip special named fields, and start dealing with attributes. * Metadata.cs: kinda gross, but make CompProperty subclass from ICompMemberContainer so that we can reuse all the code to check if the methods (set_*/get_*) match. Also, add CompAttribute * CompareContext.cs: duplicate some code to deal with attribute comparisons (need to factor this out somehow). * MasterMetadata.cs: start dealing with attributes * Masterinfo.cs: make more stuff public. 2007-12-26 Chris Toshok * CecilMetadata.cs: populate the property/event lists, and add CecilProperty/CecilEvent. return the enum list properly. * MasterMetadata.cs: more stuff added * Masterinfo.cs: make more things public 2007-12-26 Miguel de Icaza * CecilMetadata.cs: Do not crash on empty type_def.BaseType (happens for System.Object). (CecilAssembly): skip over nested types, and ignore NotPublic types as well. (PopulateTypeLists): Do not insert NestedPrivate and NestedAssembly as public APIs either. 2007-12-18 Miguel de Icaza * InfoManager.cs: 2007-12-18 Miguel de Icaza * MainWindow.cs: New file, from MonoDevelop, copy mot of the code from CompareWindow here. * Main.cs: new file, generated by MonoDevelop * InfoManager.cs: New file, this tracks and downloads new masterinfos if required on demand. * CompareContext.cs: Now the CompareContext uses two delegates of type LoadCompAssembly to do the comparison. 2007-12-07 Chris Toshok * Metadata.cs (CompClass): add GetNestedClass() method. * Masterinfo.cs (XMLClass): make nested public. * CompareWindow.cs (PerformCompare): abstract out what was in the body of SetAssemblyPath, so we can restart a comparison whenever we want -- when a new masterinfo is available, when the .dll has changed, etc. * CompareContext.cs (CompareThread): comment out call to DumpComparison. (CompareClassLists): abstract out the body of CompareClasses so it can be reused for nested classes as well as toplevel. Call CompareClassLists recursively to handle nested classes. Also, fix an &&/|| thinko. (CompareTypes): just call CompareClassLists. (CompareMethods): start implementation. (AddExtraMethod, AddMissingMethod): implement. * MasterMetadata.cs (MasterClass.GetMethods, MasterClass.GetConstructors): don't throw NIE. instead return an empty list. this causes all methods to show up as extra, but it keeps us from crashing. (MasterClass.GetNestedClasses): implement. * CecilMetadata.cs (CecilClass.GetConstructors): return empty list, don't throw NIE. (CecilClass.GetNestedClasses): implement.