mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Use C++ stringf machinery in verilog_error
This commit is contained in:
		
							parent
							
								
									733b6f0124
								
							
						
					
					
						commit
						8cd3c069d6
					
				
					 2 changed files with 20 additions and 31 deletions
				
			
		| 
						 | 
				
			
			@ -32,37 +32,14 @@ USING_YOSYS_NAMESPACE
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
[[noreturn]]
 | 
			
		||||
static void verr_at(std::string filename, int begin_line, char const *fmt, va_list ap)
 | 
			
		||||
void VERILOG_FRONTEND::formatted_err_at_loc(Location loc, std::string str)
 | 
			
		||||
{
 | 
			
		||||
    char buffer[1024];
 | 
			
		||||
    char *p = buffer;
 | 
			
		||||
    p += vsnprintf(p, buffer + sizeof(buffer) - p, fmt, ap);
 | 
			
		||||
    p += snprintf(p, buffer + sizeof(buffer) - p, "\n");
 | 
			
		||||
    YOSYS_NAMESPACE_PREFIX log_file_error(filename, begin_line, "%s", buffer);
 | 
			
		||||
    exit(1);
 | 
			
		||||
    YOSYS_NAMESPACE_PREFIX log_file_error(loc.begin.filename ? *(loc.begin.filename) : "UNKNOWN", loc.begin.line,
 | 
			
		||||
            "%s\n", std::move(str));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void vwarn_at(std::string filename, int begin_line, char const *fmt, va_list ap)
 | 
			
		||||
void VERILOG_FRONTEND::formatted_warn_at_loc(Location loc, std::string str)
 | 
			
		||||
{
 | 
			
		||||
    char buffer[1024];
 | 
			
		||||
    char *p = buffer;
 | 
			
		||||
    p += vsnprintf(p, buffer + sizeof(buffer) - p, fmt, ap);
 | 
			
		||||
    p += snprintf(p, buffer + sizeof(buffer) - p, "\n");
 | 
			
		||||
    YOSYS_NAMESPACE_PREFIX log_file_warning(filename, begin_line, "%s", buffer);
 | 
			
		||||
    YOSYS_NAMESPACE_PREFIX log_file_warning(loc.begin.filename ? *(loc.begin.filename) : "UNKNOWN", loc.begin.line,
 | 
			
		||||
            "%s\n", std::move(str));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[[noreturn]]
 | 
			
		||||
void VERILOG_FRONTEND::err_at_loc(Location loc, char const *fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, fmt);
 | 
			
		||||
    verr_at(loc.begin.filename ? *(loc.begin.filename) : "UNKNOWN", loc.begin.line, fmt, args);
 | 
			
		||||
}
 | 
			
		||||
void VERILOG_FRONTEND::warn_at_loc(Location loc, char const *fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, fmt);
 | 
			
		||||
    vwarn_at(loc.begin.filename ? *(loc.begin.filename) : "UNKNOWN", loc.begin.line, fmt, args);
 | 
			
		||||
    va_end(args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,8 +10,20 @@ YOSYS_NAMESPACE_BEGIN
 | 
			
		|||
namespace VERILOG_FRONTEND
 | 
			
		||||
{
 | 
			
		||||
    [[noreturn]]
 | 
			
		||||
    void err_at_loc(Location loc, char const *fmt, ...);
 | 
			
		||||
    void warn_at_loc(Location loc, char const *fmt, ...);
 | 
			
		||||
    void formatted_err_at_loc(Location loc, std::string str);
 | 
			
		||||
    template <typename... Args>
 | 
			
		||||
    [[noreturn]]
 | 
			
		||||
    void err_at_loc(Location loc, FmtString<TypeIdentity<Args>...> fmt, const Args &... args)
 | 
			
		||||
    {
 | 
			
		||||
        formatted_err_at_loc(std::move(loc), fmt.format(args...));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void formatted_warn_at_loc(Location loc, std::string str);
 | 
			
		||||
    template <typename... Args>
 | 
			
		||||
    void warn_at_loc(Location loc, FmtString<TypeIdentity<Args>...> fmt, const Args &... args)
 | 
			
		||||
    {
 | 
			
		||||
        formatted_warn_at_loc(std::move(loc), fmt.format(args...));
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
YOSYS_NAMESPACE_END
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue