Remove #line directives from generated files. (#5005)
authorGereon Kremer <gereon.kremer@cs.rwth-aachen.de>
Wed, 2 Sep 2020 20:15:30 +0000 (22:15 +0200)
committerGitHub <noreply@github.com>
Wed, 2 Sep 2020 20:15:30 +0000 (15:15 -0500)
This PR removes any usage of the #line directive.
We no longer consider it particularly useful, and it obstructs reproducible builds (see #4980).
Fixes #4980.

16 files changed:
src/expr/expr_manager_template.cpp
src/expr/expr_manager_template.h
src/expr/expr_template.cpp
src/expr/expr_template.h
src/expr/kind_template.cpp
src/expr/kind_template.h
src/expr/metakind_template.h
src/expr/mkexpr
src/expr/mkkind
src/expr/mkmetakind
src/expr/type_checker_template.cpp
src/expr/type_properties_template.h
src/theory/mkrewriter
src/theory/mktheorytraits
src/theory/theory_traits_template.h
src/theory/type_enumerator_template.cpp

index 0d22a3c411774f0fc1f071e711b99967a05bbf2e..bac9e3b431b4c36a45f4fdbacf8335ffa3230850 100644 (file)
 
 ${includes}
 
-// This is a hack, but an important one: if there's an error, the
-// compiler directs the user to the template file instead of the
-// generated one.  We don't want the user to modify the generated one,
-// since it'll get overwritten on a later build.
-#line 34 "${template}"
-
 #ifdef CVC4_STATISTICS_ON
   #define INC_STAT(kind) \
   { \
index a6fce56a2ddac2e744f01e5947d54f75be1a903f..145f64bd32f10f447c781315427923a814cd29a9 100644 (file)
 
 ${includes}
 
-// This is a hack, but an important one: if there's an error, the
-// compiler directs the user to the template file instead of the
-// generated one.  We don't want the user to modify the generated one,
-// since it'll get overwritten on a later build.
-#line 36 "${template}"
-
 namespace CVC4 {
 
 namespace api {
index 226736e8f06c10ce98a5b5ab11724daf3330e827..a92081fe8ec155b594ed54860d2a2d5a3bf26cab 100644 (file)
 
 ${includes}
 
-// This is a hack, but an important one: if there's an error, the
-// compiler directs the user to the template file instead of the
-// generated one.  We don't want the user to modify the generated one,
-// since it'll get overwritten on a later build.
-#line 37 "${template}"
-
 using namespace CVC4::kind;
 using namespace std;
 
index 34374d354d4614197d3b6efb96ef4e11b3d7d84c..0acce2cb0e61147c4a1b2a73e0153a441e8682ea 100644 (file)
@@ -39,12 +39,6 @@ ${includes}
 #include "options/language.h"
 #include "util/hash.h"
 
-// This is a hack, but an important one: if there's an error, the
-// compiler directs the user to the template file instead of the
-// generated one.  We don't want the user to modify the generated one,
-// since it'll get overwritten on a later build.
-#line 47 "${template}"
-
 namespace CVC4 {
 
 // The internal expression representation
@@ -621,8 +615,6 @@ private:
 
 ${getConst_instantiations}
 
-#line 625 "${template}"
-
 inline size_t ExprHashFunction::operator()(CVC4::Expr e) const {
   return (size_t) e.getId();
 }
index 0d7f5f4e4ff19e9e6eb7b387b34d8377a8ad2633..b2e165558c943fb7024550312441e49b063f7b19 100644 (file)
@@ -69,7 +69,6 @@ std::string kindToString(::CVC4::Kind k) {
 std::ostream& operator<<(std::ostream& out, TypeConstant typeConstant) {
   switch(typeConstant) {
 ${type_constant_descriptions}
-#line 73 "${template}"
   default:
     out << "UNKNOWN_TYPE_CONSTANT";
     break;
@@ -85,7 +84,6 @@ TheoryId kindToTheoryId(::CVC4::Kind k) {
   case kind::NULL_EXPR:
     break;
 ${kind_to_theory_id}
-#line 89 "${template}"
   case kind::LAST_KIND:
     break;
   }
@@ -97,7 +95,6 @@ TheoryId typeConstantToTheoryId(::CVC4::TypeConstant typeConstant)
   switch (typeConstant)
   {
 ${type_constant_to_theory_id}
-#line 101 "${template}"
     case LAST_TYPE: break;
   }
   throw IllegalArgumentException(
index d34179252ce286a336d5e7875a5cf540bd30fa6f..8ae7018b3c70d12dd8aadea087fb3d8d2773b1f4 100644 (file)
@@ -63,8 +63,6 @@ const char* toString(CVC4::Kind k);
  */
 std::ostream& operator<<(std::ostream&, CVC4::Kind) CVC4_PUBLIC;
 
-#line 67 "${template}"
-
 /** Returns true if the given kind is associative. This is used by ExprManager to
  * decide whether it's safe to modify big expressions by changing the grouping of
  * the arguments. */
@@ -86,7 +84,6 @@ struct KindHashFunction {
 enum CVC4_PUBLIC TypeConstant
 {
   ${type_constant_list}
-#line 90 "${template}"
   LAST_TYPE
 }; /* enum TypeConstant */
 
index 5fa10c90a09b52fa8f975ac9811eab8b357521f1..e1668836bbf98349d883e3dca5937c474a85d925 100644 (file)
@@ -201,8 +201,6 @@ Kind operatorToKind(::CVC4::expr::NodeValue* nv);
 
 }/* CVC4::kind namespace */
 
-#line 205 "${template}"
-
 }/* CVC4 namespace */
 
 #endif /* CVC4__NODE_MANAGER_NEEDS_CONSTANT_MAP */
index c5f12f4875e94902a1c5a4e462b66d07c0254bf3..58531cba4e76d7a73bee3b8a58a679c3d4d3962a 100755 (executable)
@@ -150,9 +150,7 @@ function typerule {
   lineno=${BASH_LINENO[0]}
   check_theory_seen
   typerules="${typerules}
-#line $lineno \"$kf\"
   case kind::$1:
-#line $lineno \"$kf\"
     typeNode = $2::computeType(nodeManager, n, check);
     break;
 "
@@ -163,9 +161,7 @@ function construle {
   lineno=${BASH_LINENO[0]}
   check_theory_seen
   construles="${construles}
-#line $lineno \"$kf\"
   case kind::$1:
-#line $lineno \"$kf\"
     return $2::computeIsConst(nodeManager, n);
 "
 }
@@ -218,26 +214,19 @@ function constant {
   fi
 
   mkConst_instantiations="${mkConst_instantiations}
-#line $lineno \"$kf\"
 template <> Expr ExprManager::mkConst($2 const& val);
 "
   mkConst_implementations="${mkConst_implementations}
-#line $lineno \"$kf\"
 template <> Expr ExprManager::mkConst($2 const& val) {
-#line $lineno \"$kf\"
   return Expr(this, new Node(d_nodeManager->mkConst< $2 >(val)));
 }
 "
   getConst_instantiations="${getConst_instantiations}
-#line $lineno \"$kf\"
 template <> $2 const & Expr::getConst< $2 >() const;
 "
   getConst_implementations="${getConst_implementations}
-#line $lineno \"$kf\"
 template <> $2 const & Expr::getConst() const {
-#line $lineno \"$kf\"
   PrettyCheckArgument(getKind() == ::CVC4::kind::$1, *this, \"Improper kind for getConst<$2>()\");
-#line $lineno \"$kf\"
   return d_node->getConst< $2 >();
 }
 "
@@ -288,10 +277,6 @@ check_builtin_theory_seen
 
 ## output
 
-# generate warnings about incorrect #line annotations in templates
-nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
-  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
-
 text=$(cat "$template")
 for var in \
     includes \
index fbf37eff4da2f1b0e717ecdc153571d317a29f60..55276549ac1a5c3ebbbba9d813dcc25a5b285daf 100755 (executable)
@@ -257,23 +257,23 @@ function register_sort {
 "
   type_constant_to_theory_id="${type_constant_to_theory_id}  case $id: return $theory_id;
 "
-  type_constant_cardinalities="${type_constant_cardinalities}#line $lineno \"$kf\"
+  type_constant_cardinalities="${type_constant_cardinalities}
   case $id: return Cardinality($cardinality);
 "
-  type_constant_wellfoundednesses="${type_constant_wellfoundednesses}#line $lineno \"$kf\"
+  type_constant_wellfoundednesses="${type_constant_wellfoundednesses}
   case $id: return $wellfoundedness;
 "
   if [ -n "$groundterm" ]; then
-    type_constant_groundterms="${type_constant_groundterms}#line $lineno \"$kf\"
+    type_constant_groundterms="${type_constant_groundterms}
   case $id: return $groundterm;
 "
     if [ -n "$header" ]; then
-      type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+      type_properties_includes="${type_properties_includes}
 #include \"$header\"
 "
     fi
   else
-    type_constant_groundterms="${type_constant_groundterms}#line $lineno \"$kf\"
+    type_constant_groundterms="${type_constant_groundterms}
   case $id: Unhandled() << tc;
 "
   fi
@@ -284,11 +284,11 @@ function register_cardinality {
   cardinality_computer=$(sed 's,%TYPE%,typeNode,g' <<<"$2")
   header=$3
 
-  type_cardinalities="${type_cardinalities}#line $lineno \"$kf\"
+  type_cardinalities="${type_cardinalities}
   case $id: return $cardinality_computer;
 "
   if [ -n "$header" ]; then
-    type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+    type_properties_includes="${type_properties_includes}
 #include \"$header\"
 "
   fi
@@ -314,20 +314,20 @@ function register_wellfoundedness {
     fi
   fi
 
-  type_wellfoundednesses="${type_wellfoundednesses}#line $lineno \"$kf\"
+  type_wellfoundednesses="${type_wellfoundednesses}
   case $id: return $wellfoundedness_computer;
 "
   if [ -n "$groundterm_computer" ]; then
-    type_groundterms="${type_groundterms}#line $lineno \"$kf\"
+    type_groundterms="${type_groundterms}
   case $id: return $groundterm_computer;
 "
   else
-    type_groundterms="${type_groundterms}#line $lineno \"$kf\"
+    type_groundterms="${type_groundterms}
   case $id: Unhandled() << typeNode;
 "
   fi
   if [ -n "$header" ]; then
-    type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+    type_properties_includes="${type_properties_includes}
 #include \"$header\"
 "
   fi
@@ -390,10 +390,6 @@ check_builtin_theory_seen
 
 ## output
 
-# generate warnings about incorrect #line annotations in templates
-nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
-  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
-
 text=$(cat "$template")
 for var in \
     kind_decls \
index e2a733ec80364ee70c781ef76a6ded9e32a94828..9d2f0a4758080698a5c97f20d8c47fab44cdbed5 100755 (executable)
@@ -270,19 +270,16 @@ $2 const& NodeValue::getConst< $2 >() const {
 "
   metakind_constHashes="${metakind_constHashes}
   case kind::$1:
-#line $lineno \"$kf\"
     return $3()(nv->getConst< $2 >());
 "
   metakind_constPrinters="${metakind_constPrinters}
   case kind::$1:
-#line $lineno \"$kf\"
     out << nv->getConst< $2 >();
     break;
 "
   cname=`echo "$2" | awk 'BEGIN {FS="::"} {print$NF}'`
   metakind_constDeleters="${metakind_constDeleters}
   case kind::$1:
-#line $lineno \"$kf\"
     std::allocator< $2 >().destroy(reinterpret_cast< $2* >(nv->d_children));
     break;
 "
@@ -301,7 +298,6 @@ function registerOperatorToKind {
   operatorKind=$1
   applyKind=$2
   metakind_operatorKinds="${metakind_operatorKinds}
-#line $lineno \"$kf\"
     case kind::$applyKind: return kind::$operatorKind;";
 }
 
@@ -396,10 +392,6 @@ check_builtin_theory_seen
 
 ## output
 
-# generate warnings about incorrect #line annotations in templates
-nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
-  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
-
 text=$(cat "$template")
 for var in \
     metakind_includes \
index 3dedd856a8a82ffeb735d9fe0859dff880bf67a0..8e4dd9236c6cd16eff8a69860eb8e29d7a65538a 100644 (file)
@@ -14,8 +14,6 @@
  ** TypeChecker implementation.
  **/
 
-#line 18 "${template}"
-
 #include "expr/node_manager.h"
 #include "expr/node_manager_attributes.h"
 #include "expr/type_checker.h"
@@ -23,8 +21,6 @@
 
 ${typechecker_includes}
 
-#line 27 "${template}"
-
 namespace CVC4 {
 namespace expr {
 
@@ -44,8 +40,6 @@ TypeNode TypeChecker::computeType(NodeManager* nodeManager, TNode n, bool check)
 
 ${typerules}
 
-#line 48 "${template}"
-
   default:
     Debug("getType") << "FAILURE" << std::endl;
     Unhandled() << n.getKind();
@@ -68,8 +62,6 @@ bool TypeChecker::computeIsConst(NodeManager* nodeManager, TNode n)
   switch(n.getKind()) {
 ${construles}
 
-#line 72 "${template}"
-
     default:;
   }
 
index a8adadf6e15da0e4dd6c88775204a586b4a8783d..9bccd589251ed258140eb7061f71e5b63e1fee5d 100644 (file)
@@ -19,8 +19,6 @@
 #ifndef CVC4__TYPE_PROPERTIES_H
 #define CVC4__TYPE_PROPERTIES_H
 
-#line 23 "${template}"
-
 #include <sstream>
 
 #include "base/check.h"
@@ -31,8 +29,6 @@
 
 ${type_properties_includes}
 
-#line 35 "${template}"
-
 namespace CVC4 {
 namespace kind {
 
@@ -47,7 +43,6 @@ inline Cardinality getCardinality(TypeConstant tc)
   switch (tc)
   {
 ${type_constant_cardinalities}
-#line 51 "${template}"
     default: InternalError() << "No cardinality known for type constant " << tc;
   }
 } /* getCardinality(TypeConstant) */
@@ -64,7 +59,6 @@ inline Cardinality getCardinality(TypeNode typeNode) {
   case TYPE_CONSTANT:
     return getCardinality(typeNode.getConst<TypeConstant>());
 ${type_cardinalities}
-#line 68 "${template}"
   default:
     InternalError() << "A theory kinds file did not provide a cardinality "
                     << "or cardinality computer for type:\n"
@@ -75,7 +69,6 @@ ${type_cardinalities}
 inline bool isWellFounded(TypeConstant tc) {
   switch(tc) {
 ${type_constant_wellfoundednesses}
-#line 79 "${template}"
 default:
   InternalError() << "No well-foundedness status known for type constant: "
                   << tc;
@@ -88,7 +81,6 @@ inline bool isWellFounded(TypeNode typeNode) {
   case TYPE_CONSTANT:
     return isWellFounded(typeNode.getConst<TypeConstant>());
 ${type_wellfoundednesses}
-#line 92 "${template}"
   default:
     InternalError() << "A theory kinds file did not provide a well-foundedness "
                     << "or well-foundedness computer for type:\n"
@@ -101,7 +93,6 @@ inline Node mkGroundTerm(TypeConstant tc)
   switch (tc)
   {
 ${type_constant_groundterms}
-#line 105 "${template}"
     default:
       InternalError() << "No ground term known for type constant: " << tc;
   }
@@ -115,7 +106,6 @@ inline Node mkGroundTerm(TypeNode typeNode)
     case TYPE_CONSTANT:
       return mkGroundTerm(typeNode.getConst<TypeConstant>());
 ${type_groundterms}
-#line 119 "${template}"
     default:
       InternalError() << "A theory kinds file did not provide a ground term "
                       << "or ground term computer for type:\n"
index 3c27f1b530f05785a5d9cad68ec421562cc36db7..871927760d6ceaa47c0a4c81ed357124b6a31ae3 100755 (executable)
@@ -243,10 +243,6 @@ check_builtin_theory_seen
 
 ## output
 
-# generate warnings about incorrect #line annotations in templates
-nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
-  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
-
 text=$(cat "$template")
 for var in \
     rewriter_includes \
index a87203015e85324efcae5e822e331f6619034610..1b1350abe5b08697926e4bc5f03621d8960a1742 100755 (executable)
@@ -214,20 +214,15 @@ function enumerator {
   lineno=${BASH_LINENO[0]}
   check_theory_seen
   type_enumerator_includes="${type_enumerator_includes}
-#line $lineno \"$kf\"
 #include \"$3\""
   if expr "$type_constants" : '.* '"$1"' ' &>/dev/null; then
     mk_type_enumerator_type_constant_cases="${mk_type_enumerator_type_constant_cases}
-#line $lineno \"$kf\"
     case $1:
-#line $lineno \"$kf\"
       return new $2(type, tep);
 "
   elif expr "$type_kinds" : '.* '"$1"' ' &>/dev/null; then
     mk_type_enumerator_cases="${mk_type_enumerator_cases}
-#line $lineno \"$kf\"
   case kind::$1:
-#line $lineno \"$kf\"
     return new $2(type, tep);
 "
   else
@@ -395,10 +390,6 @@ check_builtin_theory_seen
 
 eval "theory_constructors=\"$theory_constructors\""
 
-# generate warnings about incorrect #line annotations in templates
-nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
-  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
-
 text=$(cat "$template")
 for var in \
     theory_traits \
index 775f42a46cb22658ba80eb1c4752099ca813aca0..d591affba9e9a5c6404d2fb84f490ba9e3741b80 100644 (file)
@@ -34,8 +34,6 @@ struct TheoryTraits;
 
 ${theory_traits}
 
-#line 38 "${template}"
-
 struct TheoryConstructor {
   static void addTheory(TheoryEngine* engine, TheoryId id) {
     switch(id) {
index e9fdc6a86f864f81ce3f02da16be35049e88b1ba..47405f74eda98322ed61081f4280b3369f782477 100644 (file)
@@ -22,7 +22,6 @@
 
 
 ${type_enumerator_includes}
-#line 26 "${template}"
 
 using namespace std;
 
@@ -42,7 +41,6 @@ TypeEnumeratorInterface* TypeEnumerator::mkTypeEnumerator(
       }
       Unreachable();
       ${mk_type_enumerator_cases}
-#line 46 "${template}"
     default: Unhandled() << "No type enumerator for type `" << type << "'";
   }
   Unreachable();