From 59193af701741e4c1ad2d365b0fae4ec6baf41db Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Fri, 5 Feb 2010 20:26:20 +1300
Subject: [PATCH] alien.syntax: save source location for TYPEDEF:, raise error
 on redefinition

---
 basis/alien/c-types/c-types-tests.factor | 12 +++++++++++-
 basis/alien/syntax/syntax.factor         |  4 ++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/basis/alien/c-types/c-types-tests.factor b/basis/alien/c-types/c-types-tests.factor
index d134d57189..faee8955e9 100644
--- a/basis/alien/c-types/c-types-tests.factor
+++ b/basis/alien/c-types/c-types-tests.factor
@@ -1,6 +1,7 @@
 USING: alien alien.syntax alien.c-types alien.parser
 eval kernel tools.test sequences system libc alien.strings
-io.encodings.utf8 math.constants classes.struct classes ;
+io.encodings.utf8 math.constants classes.struct classes
+accessors compiler.units ;
 IN: alien.c-types.tests
 
 CONSTANT: xyz 123
@@ -100,3 +101,12 @@ DEFER: struct-redefined
     \ struct-redefined class?
 ] unit-test
 
+[
+    "IN: alien.c-types.tests
+    USE: alien.syntax
+    USE: alien.c-types
+    TYPEDEF: int type-redefinition-test
+    TYPEDEF: int type-redefinition-test" eval( -- )
+]
+[ error>> error>> redefine-error? ]
+must-fail-with
diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor
index 609ed2826d..295bcff089 100644
--- a/basis/alien/syntax/syntax.factor
+++ b/basis/alien/syntax/syntax.factor
@@ -1,4 +1,4 @@
-! Copyright (C) 2005, 2009 Slava Pestov, Alex Chapman.
+! Copyright (C) 2005, 2010 Slava Pestov, Alex Chapman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays alien alien.c-types
 alien.arrays alien.strings kernel math namespaces parser
@@ -22,7 +22,7 @@ SYNTAX: CALLBACK:
     (CALLBACK:) define-inline ;
 
 SYNTAX: TYPEDEF:
-    scan-c-type CREATE-C-TYPE typedef ;
+    scan-c-type CREATE-C-TYPE dup save-location typedef ;
 
 SYNTAX: C-ENUM:
     ";" parse-tokens