Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Feature Requests
 C++20 Direct Aggregate Initialization
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

swinefeaster
Tomato Guru

305 Posts

Posted - Nov 22 2021 :  5:37:49 PM  Show Profile  Reply with Quote
hey folks, are you going to support autocomplete/parsing for this soon? i use it a lot an visual assist completely drops the ball on this.

https://en.cppreference.com/w/cpp/language/aggregate_initialization

thanks
swine

feline
Whole Tomato Software

United Kingdom
17503 Posts

Posted - Nov 23 2021 :  06:13:19 AM  Show Profile  Reply with Quote
The title says C++ 20, so I assume you are looking for help having the members listed in declaration order.

We are considering adding a refactoring command to generate a full initialization list, with each member listed in order. The problem with doing this is specifying some form of default value, so it will compile, or leaving the values blank so it won't compile.

But since you can do:

struct DataStorageCpp20
{
	std::string strName;
	short nCount;
	float fDensity;
	std::string strDescription;
	std::vector<std::string> vecNames;
};
void DesignatedInitializers()
{
	// all members can be set to empty / blank values
	DataStorageCpp20 initializeEmpty =
	{
		.strName = {},
		.nCount = {},
		.fDensity = {},
		.strDescription = {},
		.vecNames = {}
	};
}

this seems to solve the default value problem.

case=146419

would this help with what you are doing, or are you looking for something else?

What parsing problems are you seeing with this? Find References is working correctly for me in the above sample, and the slightly larger test case I put together when someone else asked about this C++ 20 feature.

zen is the art of being at one with the two'ness

Edited by - feline on Nov 23 2021 06:19:13 AM
Go to Top of Page

swinefeaster
Tomato Guru

305 Posts

Posted - Nov 23 2021 :  12:37:31 PM  Show Profile  Reply with Quote
let's see, for starters, the alignment is really off. as soon as i type the period, it jumps to the first column.


void Test()
{
    DevicePoint foo
    {
.x = 5,
.y = 7,
    };

    foo.x = 5;
}


i'm also having problems with VAX.GotoImplementation (i have it mapped to Ctrl+D) on the .x for example. Initially, it got really confused and showed me a long list of unrelated symbols. Then, after I wrote the "foo.x = 5" line at the bottom and Ctrl+D'd on that x, which it found without issue, the other .x definition started working too...

Edited by - swinefeaster on Nov 23 2021 12:38:08 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17503 Posts

Posted - Nov 24 2021 :  07:17:03 AM  Show Profile  Reply with Quote
For the formatting, VA does very little code formatting its self, instead calling the IDE formatting when required. This is because the IDE has an extensive, and growing, list of formatting options already, plus you can specify clang-format commands in addition.

Testing on a clean system, where VA has never been installed, I get exactly the same formatting problem. I am not seeing any sign of an IDE formatting option, or a clang-format option that would cover this case, so no obvious help there.

It would be easy to produce a regular expression find and replace to fix the indenting here, but it might pick up other code you don't want reformatted.

I have put a note onto case=146419 to suggest that the generated code is generated indented, but if you don't format the code as the IDE expects then you can end up fighting the IDE formatting settings.

So far no sign of the Alt-G problem, either in my own code or with your sample. I just added a simple struct to match the initialization, and tried removing the "foo.x = 5" line and restarting VS2022, to make sure VA had properly caught up.

Do you have a reproducible problem with Alt-G? It's possible the problem requires more context, or is triggered by something further up the file.

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2021 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000