+ if(c=='\n')
+ ++source_line;
+}
+
+void ProgramCompiler::Formatter::set_source(unsigned index, unsigned line)
+{
+ if(index!=source_index || (index && line!=source_line))
+ {
+ if(index==source_index && line==source_line+1)
+ formatted += '\n';
+ else
+ {
+ unsigned l = line;
+ if(stage->required_version<Version(3, 30))
+ --l;
+ formatted += format("#line %d %d\n", l, index);
+ }
+ }
+ source_index = index;
+ source_line = line;