Skip to content

Item function chaining whitespace requirementΒ #12713

@PetSerAl

Description

@PetSerAl

Issue Description

It seems item function chaining require absence of whitespace before second ->.

Steps to Reproduce

Test.proj:

<Project>
	<ItemGroup>
		<I Include="A">
			<M>F</M>
		</I>
		<I Include="B">
			<M>T</M>
		</I>
		<I Include="C">
			<M>T</M>
		</I>
		<Test1 Include="@(I -> WithMetadataValue('M', 'T') -> WithMetadataValue('M', 'T'))" />
		<Test2 Include="@(I -> WithMetadataValue('M', 'T')-> WithMetadataValue('M', 'T'))" />
	</ItemGroup>
</Project>

MSBuild command line:

dotnet msbuild -getItem:Test1,Test2

Expected Behavior

Both item types (Test1 and Test2) should have the same content.

Actual Behavior

{
  "Items": {
    "Test1": [
      {
        "Identity": "@(I -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027) -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027))",
        "FullPath": "M:\\Temp\\Test\\@(I -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027) -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027))",
        "RootDir": "M:\\",
        "Filename": "@(I -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027) -\u003E WithMetadataValue(\u0027M\u0027, \u0027T\u0027))",
        "Extension": "",
        "RelativeDir": "",
        "Directory": "Temp\\Test\\",
        "RecursiveDir": "",
        "ModifiedTime": "",
        "CreatedTime": "",
        "AccessedTime": "",
        "DefiningProjectFullPath": "M:\\Temp\\Test\\Test.proj",
        "DefiningProjectDirectory": "M:\\Temp\\Test\\",
        "DefiningProjectName": "Test",
        "DefiningProjectExtension": ".proj"
      }
    ],
    "Test2": [
      {
        "Identity": "B",
        "M": "T",
        "FullPath": "M:\\Temp\\Test\\B",
        "RootDir": "M:\\",
        "Filename": "B",
        "Extension": "",
        "RelativeDir": "",
        "Directory": "Temp\\Test\\",
        "RecursiveDir": "",
        "ModifiedTime": "",
        "CreatedTime": "",
        "AccessedTime": "",
        "DefiningProjectFullPath": "M:\\Temp\\Test\\Test.proj",
        "DefiningProjectDirectory": "M:\\Temp\\Test\\",
        "DefiningProjectName": "Test",
        "DefiningProjectExtension": ".proj"
      },
      {
        "Identity": "C",
        "M": "T",
        "FullPath": "M:\\Temp\\Test\\C",
        "RootDir": "M:\\",
        "Filename": "C",
        "Extension": "",
        "RelativeDir": "",
        "Directory": "Temp\\Test\\",
        "RecursiveDir": "",
        "ModifiedTime": "",
        "CreatedTime": "",
        "AccessedTime": "",
        "DefiningProjectFullPath": "M:\\Temp\\Test\\Test.proj",
        "DefiningProjectDirectory": "M:\\Temp\\Test\\",
        "DefiningProjectName": "Test",
        "DefiningProjectExtension": ".proj"
      }
    ]
  }
}

Analysis

No response

Versions & Configurations

>dotnet --version
10.0.100-rc.2.25502.107

>dotnet msbuild -version
18.0.0.50307

Metadata

Metadata

Assignees

Labels

Area: LanguageIssues impacting the MSBuild programming language.Priority:2Work that is important, but not critical for the releasetriaged

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions