Fix list for Delphi Prism XE Update 1

By: Tim DelChiaro

Abstract: List of issues fixed in the Delphi Prism XE Update 1

This article contains information on what's new and fixes in Delphi Prism XE Update 1. You can download the update from http://cc.embarcadero.com/reg/delphi_prism.

The first section has information on features, enhancements and fixes.

The second section has information on the fixes tied to the reports in the Quality Central bug tracking system.

New in Version 4.0.27 (Build .841)

(Status: March 23, 2011, Revision master-f63d4ca)

Features

  • 46187: Support for MonoDeveloper 2.6 Beta 1
  • 45237: MonoDevelop: Sanctuary web service integration for Mac
  • 44052: Windows Phone 7 templates and integration
  • 43859: MonoDevelop: MonoMac templates
  • 43834: "Paste C# as Oxygene" in MonoDevelop
  • 43644: MonoDevelop: New MonoTouch templates
  • 43356: Support for ASP.NET MVC 2
  • 43321: Inline error messages
  • 42678: MonoDroid templates and integration
  • 41948: MonoDevelop: Oxygene language Expression Evaluator for Debugger
  • 31808: Editor Navigation Markers

Enhancements

  • 45491: Improved first-use experience when installing under a different user
  • 44747: Locals window speed optimization for EE
  • 42461: Disable "Create New Var/Method"menus when they don't apply
  • 42440: Show constant value in tool-tips
  • 42439: Show accessibility for properties in tool tip
  • 41563: Provide CC for compiler directives
  • 28454: Overflow checking should be a project (Configuration) option
  • 23017: Improvements to writing XML-doc in editor

Fixes

  • 46274: Can't have attribute on first field in class
  • 46273: Exit no longer works in an iterator ("yield break" equivalent)
  • 46187: Unable to resolve dependency: MonoDevelop.Core
  • 46187: Error on line 2511 in R:\Build\Oxygene.iss: Column 3: Unknown identifier 'MD_PATH'
  • 46119: .oxygene files aren't properly associated with VS2010
  • 46046: Form Designer has problems with Generics
  • 45852: Class completion not working in MD/Mac
  • 45824: MD: Canceling the build fails with exception
  • 45785: WP7 project in VS Shell asks for C# to be installed
  • 45759: VS locks up sometimes during build
  • 45756: C# to Pas - Add number to the file name, if original name is already in use
  • 45706: VLC cannot be imported as com object
  • 45549: Unhandeled exception when working with Dynamic Types
  • 45482: Oxfuscator: disable Run button
  • 45251: Query expression fails at runtime with error "Incorrect number of parameters"
  • 45250: Using the full name (adding the namespace) when implementing a method interferes with the CC.
  • 45236: VS2010: Unable to fold/unfold Regions
  • 45215: Two confusing "Code Analysis" project options
  • 44910: Renaming folder with files in the Solution Explorer leads to errors
  • 44878: Delphi Prism beta doesn't work with MonoMac 2.4.0.11.
  • 44714: Some types aliases (cardinal, word etc) are not recognized by EE
  • 44713: Casting int value to some enum results in int value
  • 44667: The name of the first added Windows Form to a project is Form, which can create confusion with System.Windows.Forms.Form.
  • 44654: Value for composite enum value sometimes evaluates to "{...}"
  • 44561: Errors don't show right away in compiler project
  • 44535: EE wrongly enumerates items on classes derived from List
  • 44012: The "Add" -> "Area" context menu in an ASP.NET MVC2 Web Application project throws an error when used.
  • 44010: The ASP.NET MVC Web Site project generated to host a new Silverlight is written in C#.
  • 43864: CodeSiteWrapper project has error
  • 43810: Problems with {$IFDEF CC
  • 43799: Set equality operator does not work
  • 43753: Various obfuscation issues
  • 43635: Unnecessary warning generated from newly added forms
  • 43587: EE: Class Properties cannot be watched separate from the whole object
  • 43509: CC doesn't see class alias in other assembly
  • 43503: The debugger cannot evaluate typeOf(...)
  • 43486: Build errors in translated dlls
  • 43481: compiler is run on every build, even if project was not changed
  • 43432: Empty MVC2 template: "Add Controll" wizard should generate public controller class. Now it is private by default
  • 43401: MVC2 Template: can't add controller to the empty Controllers folder
  • 43382: RescanRefs happens on project close
  • 43284: Targets don't get installed with cmdline install
  • 43283: Oxygene cmdline setup doesn't install Oxfuscator
  • 43205: Class Completion copies attributes on parameters
  • 43134: CC for named parameters shows completion list between : and completes on pressing =
  • 42926: Crash of Visual Studio when typing specific set of code
  • 42915: EE doesn't respect generic params on casting
  • 42877: NRE crashes VS
  • 42876: CC problems in customer project
  • 42875: Crashes in ASP.NET editing
  • 42874: CodeSite (and possibly other 3Ps) don't show in setup if they were already installed even if the installer is newer
  • 42846: Enum type is evaluated as nil in watch window
  • 42845: "Results view" node shows nothing if IEnumerable contains no items
  • 42782: Changing InitializeComponent to InitializeComponent() breaks designer
  • 42776: Incorrect BuildAction for added include file
  • 42705: Project options invisible on 'small' screens
  • 42627: VS2010 - EE and enums
  • 42613: Casting List<> object to IEnumerable results in "Invalid cast" exception value in watch window
  • 42610: Sort "Utilities" before "Utilities (Microsoft.Build.System)" in CC
  • 42593: WPF DA Prism Client datasource drag/drop error
  • 42574: EE should set appropriate icons for evaluated objects
  • 42447: Pressing F1 with the cursor positioned on a namespace in the "uses" clauses generates an error.
  • 42444: CC only shows first of several "class var"s
  • 42441: Selecting "Go To Definition" and long method puts cursor outside of viewport
  • 42403: XAML editor performance degrades after building the project.
  • 42256: New files added in MonoDevelop are badly formatted
  • 42019: The parser incorrectly marks calls like "SomeMethod(out self.fSomeVar)" as erroneous.
  • 41985: Problems with Monoobjc template in MD
  • 41449: Unrecoverable build error in VS2008 and VS2010 setup projects (msi)
  • 41185: VS2010 - The source file navigation controls grow vertically
  • 40824: The project template for WPF Application does not add the "DEBUG" and "TRACE"
  • 40404: Default page not set in the "Simple ASP.NET 2.0" sample project.
  • 40184: Missing translation of Project Option dialog.
  • 39977: Referencing the local namespace from XAML in an WFP or Silverlight application causes the CC to stop working
  • 38765: MD/Mac: New Web application does not run out of the box
  • 38440: Extra "end;" added when compile directives are used.
  • 37715: New lines inside a block comment treated by the syntax highlighter as regular code.
  • 37681: Project Properties show icon preview, even if icon file is missing
  • 37481: Japanese string result in corrupted display for Prism Gtk# application
  • 33676: Code highlight works not correct when breakpoint is set in line containing tabs
  • 33311: Add support for Collapse command

Below is a list of QC reported bugs that were fixed in Delphi Prism XE Update 1. 

QC #: Date Reported: Area:
81175 1/14/2010 IDE\VS Integration
Description: Steps:
[QC Short Description]
"Go to code" link does nothing in WinForms "broken designer" page.

[QC Description]
When you break the code behind the WinForms designer, the designer will not display your form. Instead it displays the "broken designer" page, which states "to prevent possible data loss before loading the designer, the following errors must be resolved:" In that page there are tabs for each designer error. At the top of a tab page, there is a link that says "Go to code". The link does nothing. 

I also think that the link under "Instances of this error" should jump to that code and it does not do so. I suspect they're related.
QC Entry 81175

(RO37485)
Create a new winforms application. Drop a button on the form. Double-click the button to create a click handler. CTRL-SHIFT-S to Save all. Remove the MainForm.button1_Click handler method body from the implementation. Remove the button1_Click method from teh MainForm class interface declaration. Double-click the Main.pas node of the solution explorer tree to open the MainForm designer. You now see the "broken designer" page as expected. In the yellow bar in the middle, there is a link to "Go to code". Click on it and it does nothing. The code location link under "Instances of this error" also does nothing, and I suspect it should function identically to the "Go to code" link.
QC #: Date Reported: Area:
84544 5/11/2010 Compiler
Description: Steps:
[QC Short Description]
Unable to use [x,y] syntax on array of array of

[QC Description]
When defining an 'n' dimensional array as (eg) array of array of single, prism demands that you use separate sets of square brackets for each dimension, whereas win32 allows you to put all the dimensions in one set of square brackets separated by commas.
QC Entry 84544

(RO40325)
Define an array (for example) procedure test; var x : array of array of single begin // ... init the array dimensions // then x[0,0] := 1.0; // fails here // ... x[0][0] := 1.0; // this is ok. end;
QC #: Date Reported: Area:
84836 5/23/2010 Compiler
Description: Steps:
[QC Short Description]
Problem Using Ling Count vs List Count

[QC Description]
See steps.
QC Entry 84836

(RO40686)
Tried to use the Linq Count method var stringPropertyCount := model.Properties.Count ( (p) -> p.DataType = typeof(String)); where model.Properties is a property of type System.Collections.Generic.List The compiler thinks I'm trying to reference List .Count so it doesn't like the "<" after Count. The compler missed that I was making a refererence to the Linq IEnumerable.Count<>() method. So, I added a type-cast to IEnumerable<> var stringPropertyCount := IEnumerable (model.Properties).Count ( (p) -> p.DataType = typeof(String)); and then it compiled. You shouldn't need the cast. The List IS an IEnumerable.
QC #: Date Reported: Area:
84837 5/23/2010 Compiler
Description: Steps:
[QC Short Description]
Reference to regular methods vs generic methods

[QC Description]
See steps
QC Entry 84837

(RO40685)
I have a static class ExecuteHelper which contains the following methods with the same names class method TryCatchLog(action: Action); class method TryCatchLog(errorMessage: String; action: Action); class method TryCatchLog(errorMessage: String; log: ILog; action: Action); class method TryCatchLog(errorMessage: String; action: Func): T; class method TryCatchLog(errorMessage: String; log: ILog; action: Func): T; I'm trying to reference this with this statement ExecuteHelper.TryCatchLog(error, -> File.WriteAllText(fileName, sql)); This gives me a (PE240) Generic parameter "T" for this method call could not be fully resolved. Hmmmm, do you think you could have just used the SECOND TryCatchLog method and IGNORED T? The only way I could get this to compile was to go along with specifying a T and using a Func instead of an Action. ExecuteHelper.TryCatchLog(error, -> begin File.WriteAllText(fileName, sql); exit true; end);
QC #: Date Reported: Area:
85892 7/2/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010 - Provide CC for compiler directives

[QC Description]
There is no CC for compiler directives.
It should be available when we type {$.
Can also be merged with QC #85806, when typing only {.
QC Entry 85892

(RO41563)
 
QC #: Date Reported: Area:
86606 7/27/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010 - Class fields and CC

[QC Description]
When a class define more than 1 class field, only the first one is visible in code completion.
QC Entry 86606

(RO42444)
1. Create a new console application. 2. Replace the code in Program.pas with: namespace ConsoleApplication1; interface type ConsoleApp = class public class Field1 : Int32; Field2 : Int32; public class method Main(args: array of string); end; implementation class method ConsoleApp.Main(args: array of string); begin var a := F // Position the cursor after the "F" end; end. 3. Place the cursor after the "F" and invoke class completion: Field1 is displayed, but not Field2.
QC #: Date Reported: Area:
86753 7/30/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010 - Selecting Go To Definition and long method

[QC Description]
When you select a long method in the interface section and select Go To Definition the cursor is put at the beginning of the method but the scroller show the end of it.
QC Entry 86753

(RO42441)
 
QC #: Date Reported: Area:
86758 7/30/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010: constant value in tool-tips

[QC Description]
When I move the move other an identifier, VS2010 displays the kind of identifier, its name and its type.
When it is over a constant, it should also display the constant value.
QC Entry 86758

(RO42440)
 
QC #: Date Reported: Area:
86759 7/30/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010: show accessibility for properties

[QC Description]
When the mouse is over a property, a tool-tip displays the read and write access of it, but don't display the accessibilities:

Property MyProp read private write;

shows only read write.
QC Entry 86759

(RO42439)
 
QC #: Date Reported: Area:
87413 8/20/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
How to kill VS2010

[QC Description]
Just by writing some Delphi Prism code, we can kill VS2010.
QC Entry 87413

(RO42926)
1. Create a new Delphi Prism class project. 2. Replace the code in Class1.pas with: namespace ClassLibrary1; interface type Class1 = public class end; Class1 = public Class1 // Enter a ; here to kill VS2010 implementation end. This not a valid program, but VS2010 should never crash with bad source code.
QC #: Date Reported: Area:
87414 8/20/2010 Compiler
Description: Steps:
[QC Short Description]
If expression and nullable values

[QC Description]
When the compiler compiles an if expression (or a case expression) that have integer values and Nil, the resulting type must be nullable Int32 and not object.
Same thing for other nullable types.
QC Entry 87414

(RO42925)
1. Create a new class library. 2. Replace the code in Class1 with: namespace ClassLibrary1; interface type Class1 = public class public method DoSomething; end; implementation method Class1.DoSomething; begin Var a : nullable Int32; a := If Assigned (a) Then a Else Nil end; end. 3. Compile Error 1 (CE15) Type mismatch, cannot assign System.Object to nullable System.Int32 C:\Temp\ClassLibrary1\Class1.pas 16 8 ClassLibrary1
QC #: Date Reported: Area:
87424 8/21/2010 IDE\Project Management
Description: Steps:
[QC Short Description]
Incorrect BuildAction for added include file

[QC Description]
When adding a file to a project to be used as an include file (i.e. *.inc) the BuildAction is set to Content when it should be Compile.
QC Entry 87424

(RO42776)
Create a new console app and then add a .inc file to the project. Attempting to compile will results in a (CE47) File not found ".inc" error.
QC #: Date Reported: Area:
87446 8/22/2010 Compiler
Description: Steps:
[QC Short Description]
Overloaded nested methods

[QC Description]
The compiler doesn't like overloaded method nested in other methods.
QC Entry 87446

(RO42922)
1. Create a new Delphi Prism Class project. 2. Replace the code in Class1.pas with: namespace ClassLibrary1; interface type Class1 = public class public method DoSomething; end; implementation method Class1.DoSomething; method &Do (i : Int32); Begin End; method &Do (s : String); Begin End; begin Var i : Int32; Var s : String; &Do (i); &Do (s) end; end. 3. Compile: Error 1 (PE19) There is no overloaded method "Do" with these parameters C:\Temp\ClassLibrary2\Class1.pas 19 10 ClassLibrary2 Warning 2 (PH2) Best matching "ClassLibrary2.Class1.DoSomething.Do(s: System.String)" doesn't match on parameter 1, parameter is "System.Int32" should be "System.String" C:\Temp\ClassLibrary2\Class1.pas 19 10 ClassLibrary2 The compiler doesn't see the overloads.
QC #: Date Reported: Area:
87798 9/5/2010 IDE
Description: Steps:
[QC Short Description]
Missing default constructor and InitializeComponent call

[QC Description]
When adding a new Silverlight 4 navigation page, there is no constructor created, so InitializeComponent is not called.
QC Entry 87798

(RO43206)
In a silverlight 4 project, add a new item-> new page
QC #: Date Reported: Area:
87898 9/8/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
Class Completion copies attributes on parameters

[QC Description]
If you put attributes on method parameters in the Interface section of a class definition then use Class completion to create the shell of the implementation section, Class completion copies all of the attributes into the implementation section method headers. Then, the compiler gives you a PE139 error that the attribute can be specified only once. Either convince Carlo to not give a compile error (unlikely) or stop copying parameter attributes into the implementation section.
QC Entry 87898

(RO43205)
See description -- seems self explanatory.
QC #: Date Reported: Area:
88060 9/14/2010 Compiler
Description: Steps:
[QC Short Description]
Can't Use a Generic as an Exception Selector

[QC Description]
If you have a generic method such as 

class method ExpectException(...) where TException is Exception;

you cannot use TException as an exception selector even though it is constrained to be of type Exception.

try
...
except 
on TException do 
exit;
end;

Well, actually you CAN, but you'll get a very hard to find CE7 internal error when you do.
QC Entry 88060

(RO43204)
Example Code sent to Carlo.
QC #: Date Reported: Area:
88176 9/17/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
VS2010: Provide support for Sandcastle documentation

[QC Description]
In VS2010 there is no help from the IDE to write Sandcastle documentation.
QC Entry 88176

(RO43199)
The IDE should provide CC when starting a Sandcastle documentation block: /// < What would be also very nice is to have an automatic creation of documentation block on any class or member. For example, if I have the following method definition. method DoSomething (Text : String; Action : Int32) : Array Of String; The IDE would generate the following comments: /// /// /// /// ///
QC #: Date Reported: Area:
88407 9/26/2010 Compiler
Description: Steps:
[QC Short Description]
MetaClass and XML documentation

[QC Description]
When the compiler emits a MetaClass inside another class, it should mark the MetaClass with 
the CompilerGenerated attribute.
Otherwise, Sandcastle will emit documentation for this class and will add messages saying 
that the class is not documented.
QC Entry 88407

(RO43501)
 
QC #: Date Reported: Area:
88408 9/26/2010 Compiler
Description: Steps:
[QC Short Description]
XML documentation for a class property getter

[QC Description]
When a class property has a getter method that is documented with the XML documentation, the 
compiler forgets to export the name of the method.
QC Entry 88408

(RO43500)
1. Create a new class library project. 2. Enable XML documentation on the project. 3. Replace the code in Class1.pas with: namespace ClassLibrary1; interface type /// /// A class. /// Class1 = public class private /// /// Get a value. /// /// The value. class method Get_Value : Int32; empty; public /// /// A value. /// /// The value. class property Value : Int32 read Get_Value; end; implementation end. 4. Compile The XML documentation file is: ClassLibrary1 A class. Get a value. The value. A value. The value.
QC #: Date Reported: Area:
88563 10/1/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
CC don't see class alias in other assembly

[QC Description]
When an assembly references another assembly with a class alias on it, CC doesn't see the class alias.


Added by Sysop
<<<<<<
CC is 'Code Completion'
>>>>>>
QC Entry 88563

(RO43509)
1. Create a new class library (ClassLibrary1). 2. Replace Class1.pas with: namespace ClassLibrary1; interface type Class1 = public class public end; Class1Alias = public Class1; implementation end. 3. Create a new class library solution in the same project (ClassLibrary2). 4. In ClassLibrary2, make a reference to ClassLibrary1. 5. Replace the Class1.pas file of ClassLibrary2 with: namespace ClassLibrary2; interface uses ClassLibrary1; type Class2 = public class public method DoNothing; end; implementation method Class2.DoNothing; begin var a : // <== No Class1Alias in CC end; end.
QC #: Date Reported: Area:
88605 10/4/2010 Compiler
Description: Steps:
[QC Short Description]
Automatic var initialisation requires ':=' when in Delphi Compatibility Mode

[QC Description]
When compiling Delphi code in Prism, this following code casues a syntax error on the '=':

var
MyVar : Integer = 0;

Instead Prism requires it to be

var
MyVar : Integer := 0;

The Delphi compatibility mode allows the use of '=' in default method parameter values. I think this case should also be covered.
QC Entry 88605

(RO43506)
See description.
QC #: Date Reported: Area:
88899 10/12/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
You should be able to configure the color of the caret animation

[QC Description]
Currently the rings are displayed using a purple color, it would be nice if this could be changed.

Since the editor background can be changed, other colors might be more effective.
QC Entry 88899

(RO43800)
 
QC #: Date Reported: Area:
88923 10/13/2010 Compiler
Description: Steps:
[QC Short Description]
Set equality operator does not work

[QC Description]
The set equality and inequality operators do not seem to work in Delphi Prism XE. When I run simple code like this, the sets are not considered equal.

type MyAttribute = (
AttributeA,
AttributeB
);
MyAttributes = set of MyAttribute;

...
var a: MyAttributes := [MyAttribute.AttributeA];

if a = [MyAttribute.AttributeA] then
Console.WriteLine('Equality test succeeds')
else
Console.WriteLine('Equality test fails');

As far as I can see, this is a bug in +Set.op_Equality

According to Reflector the comparison of the array elements looks like this:
if (((num >= a.fValue.Length) ? 0 : a.fValue) != ((num >= b.fValue.Length) ? 0 : b.fValue))

instead of this:

if (((num >= a.fValue.Length) ? 0 : a.fValue[num]) != ((num >= b.fValue.Length) ? 0 : b.fValue[num]))

I.e. it compares the array references instead of the actual elements.
QC Entry 88923

(RO43799)
Compile and run the attached sample program, and watch the output. I expect it to say 'Equality test succeeds' but it does not.
QC #: Date Reported: Area:
88950 10/14/2010 Compiler
Description: Steps:
[QC Short Description]
Malformed conditional directive causes endless error messages

[QC Description]
Certain malformed conditional directives cause endless error messages from the compiler. The Visual Studio 2010 Shell environment becomes unresponsive long enough that you have to terminate it. If you run MSBuild.exe in a command prompt, it gives up after 5000 error messages.

Adding the following line to a class causes the problem (note that the curly bracket before $ENDIF iss missing)
const strs: Array[0..1] of string ={$IFDEF CLR}[{$ELSE}($ENDIF}'A', 'B'];

The error message that keeps repeating is:
...\Program.pas(25,1,25,1): error PE24: "end" expected [...\CondDef.oxygene]
...\Program.pas(25,1,25,1): error PE24: "end" expected [...\CondDef.oxygene]
...\Program.pas(25,1,25,1): error PE24: "end" expected [...\CondDef.oxygene]

This has happened to me a few times when adapting code to be able to compile it in both Delphi/win32 and Delphi Prism, but probably does not happen often during normal programming.
QC Entry 88950

(RO43801)
Create a new console application and add the following line to the public section of the class, or open the attached sample application. const strs: Array[0..1] of string ={$IFDEF CLR}[{$ELSE}($ENDIF}'A', 'B']; Try to build the application. I expect one error message, not an unresponsive IDE due to 5000 error messages.
QC #: Date Reported: Area:
89161 10/22/2010 Compiler
Description: Steps:
[QC Short Description]
Record properties initialized using := in call to constructor are not always set

[QC Description]
I'm having problems using the extended constructor call syntax for initializing properties in records from assemblies not created in Delphi Prism. 

If we pretend that System.Drawing.Point only has a constructor that takes 0 arguments, the following two ways of creating and initializing a Points should be equivalent, shouldn't they?

var p1: System.Drawing.Point := new System.Drawing.Point;
p1.X := 11;
p1.Y := 22;
Console.WriteLine(String.Format('Test system point X={0}, Y={1}', p1.X, p1.Y));

var p2: System.Drawing.Point := new System.Drawing.Point(X := 33, Y := 44);
Console.WriteLine(String.Format('Test system point X={0}, Y={1}', p2.X, p2.Y));

However, if you add the lines above to a console application and add a reference to System.Drawing.dll, the output is:

Test system point X=11, Y=22
Test system point X=0, Y=0

I.e. my property initializations are silently ignored by the compiler!

In my case I was actually trying to initialize an array of records that are from a legacy DLL and only have public fields, no constructors.

If you create the following record in Prism:

MyPoint = public record
public
X: Integer;
property Y: Integer;
end;

This works:

var p3: MyPoint := new MyPoint(X := 55, Y := 66);
Console.WriteLine(String.Format('Test system point X={0}, Y={1}', p3.X, p3.Y));
QC Entry 89161

(RO44440)
Compile and run the attached sample application
QC #: Date Reported: Area:
89162 10/22/2010 Compiler
Description: Steps:
[QC Short Description]
Issue with Nullable types larger than 32 bits and Named Parameters

[QC Description]
If you try to set a property of a type larger than 32 bits to nil as a named parameter in the constructor call, you get a NullReference error at runtime.

In the steps code, from limited testing, if you make the nullable type any type larger than 32 bits, the exception is raised. 

DateTime, Double, Int64 all fail.

I you make the nullable type 32 bits or smaller, it works.

Byte, Integer, Single all work.

And if you set the property to nil after the constructor call instead of in the constructor (commented out code) it works.
QC Entry 89162

(RO44439)
namespace NullableBug; interface type TimeClass = public class public property Time: nullable DateTime read write; end; ConsoleApp = class public class method Main(args: array of string); end; implementation class method ConsoleApp.Main(args: array of string); begin try var T := new TimeClass(Time := nil); // T.Time := nil; Console.WriteLine("Worked!"); except Console.WriteLine("Raised exception!"); end; Console.ReadLine; end; end.
QC #: Date Reported: Area:
89843 11/19/2010 IDE\Code Editor
Description: Steps:
[QC Short Description]
Generic constraints

[QC Description]
The compiler complains on some generic constraints, where it should not.
QC Entry 89843

(RO44657)
If I compile the following code (for a new class library project): namespace ClassLibrary1; interface type DataClass = public class end; GenClass1 = public class where TData is class; end; GenClass2 = public class where TData is DataClass; public AField : GenClass1 ; // Error here end; implementation end. The compiler says: c:\Temp\ClassLibrary1\Class1.pas(16,33): error PE148: Generic parameter doesn't validate on "is class" constraint for "TData" But, DataClass is a class so if the TData parameter of GenClass2 is a DataClass, it is also a Class, so it should validate the "Is Class" constraint.
QC #: Date Reported: Area:
90185 12/8/2010 Compiler
Description: Steps:
[QC Short Description]
Generated member should have the CompilerGenerated attribute

[QC Description]
Some members generated automatically be the compiler should have the [CompilerGenerated] attribute.
Those that don't have it are (perhaps not complete list):
- Anonymous methods.
- Methods inside other methods.
- Auto-declared fields for properties.

If they have not this attribute, they will make error entries for automatically generated help files. I'm talking about help files that contains private members, useful for development of an assembly.

For methods inside other methods, the compiler should add the attribute or (better) correctly link the documentation to the method.
QC Entry 90185

(RO44869)
1. Create a new Class Library project: 2. Replace Class1.pas with: namespace ClassLibrary1; interface uses System.Collections.Generic, System.Linq; type Class1 = public class public property MyProp : Int32; method DoSomething; end; implementation method Class1.DoSomething; begin var List := new List ; var Selected := from Item in List where MyProp > 5; end; end. 3. Select "Generate XML documentation" in the project properties. 4. Compile. 5. Create a help project for the generated assembly and select private and internal members. 6. Compile the help project. 7. Look at the generated help file, it contains entries for b__0 and @p_MyProp
QC #: Date Reported: Area:
90346 12/15/2010 Compiler
Description: Steps:
[QC Short Description]
Query expression fails at runtime with error "Incorrect number of parameters"

[QC Description]
Note:

You might need to install Sql Server CE 4

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0d2357ea-324f-46fd-88fc-7364c80e4fdb&displaylang=en

and 

http://blogs.msdn.com/b/adonet/archive/2010/12/06/ef-feature-ctp5-released.aspx

both are community tech previews

QC Entry 90346

(RO45251)
1) Open the supplied example and run. At runtime a database is created, so you will need to set the connection string with a valid directory path. expected: The application should run without errors actual: System.ArgumentException is thrown at the following line var otherGrouping := from t in context.Taggings group by t.Tag.Id into item select new Something (Count := item.Count, Name := item.FirstOrDefault.Tag.Name); Note: The line before shown below, uses a anonymous class and runs ok. var grouping := from t in context.Taggings group by t.Tag.Id into item select new class (Id := item.Key, Count := item.Count, Name := item.FirstOrDefault.Tag.Name);
QC #: Date Reported: Area:
90425 12/20/2010 Compiler
Description: Steps:
[QC Short Description]
Silverlight: operation could destabilize the run time!

[QC Description]
I have code in a generic class that looks like this:

Result := New TValue (DBValue := Nb);
Exit;

where TValue is the generic type.
This code compiles fine, but when run in a Silverlight application, I have an exception "Operation could destabilize the run time".

If I write the code without the extended constructor call, the code runs fine!
QC Entry 90425

(RO45552)
** BAD ** Result := New TValue (DBValue := Nb); Exit; local := Activator.CreateInstance; local.DBValue := Nb; result := local; L_006c: call !!0 [mscorlib]System.Activator::CreateInstance() L_0071: stloc.3 L_0072: ldloca.s local L_0074: ldloc.2 L_0075: call instance void Fivb.Vis.BaseValueType::set_DBValue(int32) L_007a: ldloc.3 L_007b: stloc.0 L_007c: ldloc.0 L_007d: ret ** OK ** Result := New TValue; Result.DBValue := Nb; Exit; local := Activator.CreateInstance; Result := local; Result.DBValue := Nb result := Result; L_006c: call !!0 [mscorlib]System.Activator::CreateInstance() L_0071: stloc.3 L_0072: ldloc.3 L_0073: stloc.0 L_0074: ldloca.s Result L_0076: ldloc.2 L_0077: constrained !TValue // <== missing from BAD code L_007d: callvirt instance void Fivb.Vis.BaseValueType::set_DBValue(int32) L_0082: ldloc.0 L_0083: ret
QC #: Date Reported: Area:
90712 1/5/2011 Compiler
Description: Steps:
[QC Short Description]
Unhandled exception when working with Dynamic Types in MVC3

QC Entry 90712

(RO45549)
1) Open supplied application and run, attempt to view Home/Index in the browser i.e http://localhost:49636/Home/Index Expected: Page should display without any errors Actual: Server error is display in method of HomeController class No properties called "Message" defined on "System.Object" Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: RemObjects.Oxygene.Dynamic.OxygeneBinderException: No properties called "Message" defined on "System.Object" Source Error: Line 20: method HomeController.Index: ActionResult; Line 21: begin Line 22: ViewBag.Message := 'Welcome to ASP.NET MVC!'; Line 23: Line 24: exit View; [OxygeneBinderException: No properties called "Message" defined on "System.Object"] CallSite.Target(Closure , CallSite , Object , String ) +347 System.Dynamic.UpdateDelegates.UpdateAndExecute2(CallSite site, T0 arg0, T1 arg1) +699 DynamicWebApplication.Controllers.HomeController.Index() in c:\develop\DynamicWebApplication\DynamicWebApplication\Controllers\HomeController.pas:22 lambda_method(Closure , ControllerBase , Object[] ) +97 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +208 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
QC #: Date Reported: Area:
91280 2/2/2011 Install
Description: Steps:
[QC Short Description]
Select Delphi Prism Silverlight for Windows Phone template results in Error

[QC Description]
When the Delphi Prism Silverlight for Phone 7 template is started, Visual Studio is raising an error:

"You need to install support for Visual C# by repairing Visual Studio 2010 before creating a Silverlight for Windows Phone project"

I don't think the error is related with a damaged Visual Studio. I think this Delphi template triggers a C# installation and that is
not avaible in my installation of Visual Studio Shell. I only use this Visual Studio for Delphi Prism and there is nothing C# installed. The other Delphi templates are working OK.

I looked a bit to the repair of Visual Studio:

Via Windows Control Panel I try to "Repair" Visual Studio but the only Visual Studio entry in the program list is :

"Microsoft Visual Studio 2010 Shell (Integrated) - ENU"

and I can only REMOVE it. There is no opttion to "REPAIR" it..

I started the SETUP in the Visual Studio folder and indeed there in the install dialog I can Repair it. But i don't have the the disk for Visual Studio. It is installed via Delphi Prism Installation disk. (Media Kit)

I didn't / couldn't do the repair and wait for an answer before
I remove and reinstall Delphi Prism. (The other Delphi Prism templates are still working ok..)

QC Entry 91280

(RO45996)
Start Delphi Prism Visua Studio New Prioject. Select Delphi Prism in the installed Termplates Select "Silverlight for Windows Phone. Select "Windows Phone Application" Error: "You need to install support for Visual C# by repairing Visual Studio 2010 before creating a Silverlight for Windows Phone project"
QC #: Date Reported: Area:
91748 2/23/2011 Compiler
Description: Steps:
[QC Short Description]
Can't compile a Silverlight application with aspects

[QC Description]
When compiling a Silverlight application that contains aspects, the compiler doesn't run the aspects.
The generated error is:
error PE267: Exception during running aspect: Attribute does not implement IBaseAspect.
Compiling a Silverlight DLL is working, but only after the project is rebuild.
QC Entry 91748
 
QC #: Date Reported: Area:
92081 3/8/2011 Compiler
Description: Steps:
[QC Short Description]
Can*t have attribute on first field in class

[QC Description]
If you try to specify an attribute on the first field in a class definition, you get the error "Invalid position for attributes"
QC Entry 92081

(RO46274)
Type the following into the IDE: namespace YieldBreakProblem; interface uses System.Diagnostics; type Class1 = public class private [DebuggerBrowsable(DebuggerBrowsableState.Never)] _field: Char; end; implementation end. Compile, and you'll get an error on the attribute, Define another field first, and the error goes away.
QC #: Date Reported: Area:
92082 3/8/2011 Compiler
Description: Steps:
[QC Short Description]
Exit no longer works in an iterator ("yiield break" equivalent)

[QC Description]
I submitted QC 86917 which lead to "exit" being a way to exit from an iterator. This no longer works -- you get error "CE11 method does not have a result" when you try to use this functionality.
QC Entry 92082

(RO46273)
namespace YieldBreakProblem; interface uses System.Collections.Generic, System.Diagnostics, System.Runtime.CompilerServices; type [&Extension] IEnumerableExtensions = public static class public [&Extension] class method TakeAllOrOne(_enum: IEnumerable; _all: Boolean; _take: Func



Server Response from: ETNASC03